相关疑难解决方法(0)

PHP中的全局变量是否被视为不良做法?如果是这样,为什么?

function foo () {
    global $var;
    // rest of code
}
Run Code Online (Sandbox Code Playgroud)

在我的小PHP项目中,我通常采用程序方式.我通常有一个包含系统配置的变量,当我需要在函数中访问此变量时,我会这样做global $var;.

这是不好的做法吗?

php global global-variables

84
推荐指数
5
解决办法
3万
查看次数

PHP中的不可变对象?

创建无法在PHP中更改的对象是一个好主意吗?

例如,具有setter方法的日期对象,但它们将始终返回对象的新实例(具有修改日期).

这些对象是否会让使用该类的其他人感到困惑,因为在PHP中,您通常希望对象发生变化?

$obj = new Object(2);

$x = $obj->add(5); // 7
$y = $obj->add(2); // 4
Run Code Online (Sandbox Code Playgroud)

php class immutability

12
推荐指数
3
解决办法
2万
查看次数

为什么在函数内使用"全局"引用被认为是不好的做法?

可能重复:
PHP中的全局变量是否被视为不良做法?如果是这样,为什么?
全球职能

编辑:问题在上面的链接中回答.

不,php中的"global"与其他语言中的global不同,虽然它没有引入任何安全问题,但它可以使代码对其他人的理解变得不那么容易理解.


OP:

项目摘要 - 我正在编写一个Web CMS来熟悉PHP/MySQL.为了分解代码,我有一个基本层/模块的概念:

数据
- MySQL表
- PHP变量

功能
- SQL - 获取/设置/等
- 前端 - 显示页面
- 后端 - 经理

演示文稿
- HTML模板
- 页面内容
- CSS样式表

目标很普遍.使用MySQL来保存站点设置和页面内容,使用php来获取/操作正在提供的页面的内容数据,然后插入到html模板中并回显到浏览器.来自C#等OO语言,我遇到的第一个问题是使用包含和函数时的可变范围问题.

从一开始我就编写了仅用于函数的php文件,并将其包含在其他具有现有变量数组定义的文件中.例如,暂时忽略数据层,一个简单的页面通常可能如下所示:

文件1(页面)

$DATA_PAGE = Array
(
  'temp'  = null,
  'title' = null,
  [...]
);

include 'functions.php';

get_data ( 'page.php' );

[...]

run_html ();
Run Code Online (Sandbox Code Playgroud)

文件2(功能)

function get_data ( $page_name )
{
  global $DATA_PAGE;

  $DATA_PAGE [ 'temp'  ] = 'template';
  $DATA_PAGE [ 'title' ] = 'test …
Run Code Online (Sandbox Code Playgroud)

php security encapsulation scope function

4
推荐指数
1
解决办法
7124
查看次数