function foo () {
global $var;
// rest of code
}
Run Code Online (Sandbox Code Playgroud)
在我的小PHP项目中,我通常采用程序方式.我通常有一个包含系统配置的变量,当我需要在函数中访问此变量时,我会这样做global $var;.
这是不好的做法吗?
创建无法在PHP中更改的对象是一个好主意吗?
例如,具有setter方法的日期对象,但它们将始终返回对象的新实例(具有修改日期).
这些对象是否会让使用该类的其他人感到困惑,因为在PHP中,您通常希望对象发生变化?
例
$obj = new Object(2);
$x = $obj->add(5); // 7
$y = $obj->add(2); // 4
Run Code Online (Sandbox Code Playgroud) 编辑:问题在上面的链接中回答.
不,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)