<分区>
Possible Duplicate:
Are global variables in PHP considered bad practice? If so, why?
global in functions
编辑:上面链接中回答的问题。
不,php 中的“global”与其他语言中的 global 不是一回事,虽然它不会引入任何安全问题,但它会使其他人难以理解代码。
运算符(operator):
项目摘要 - 我正在编写一个 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 ();
文件2(函数)
function get_data ( $page_name )
{
global $DATA_PAGE;
$DATA_PAGE [ 'temp' ] = 'template';
$DATA_PAGE [ 'title' ] = 'test page';
[...]
}
function run_html ()
{
global $DATA_PAGE;
echo '<html>';
echo '<head>';
echo '<title>' . $DATA_PAGE [ 'title' ] . '</title>';
[...]
}
我选择这种方法有几个原因:
- sql fetch后这些数组中的数据可能会在任何地方使用,包括页面内容
- 我不想有十几个函数参数,也不想传递整个数组
代码运行良好。但是在我找到的每篇关于这个主题的文章中,我的函数中的“全局”调用都被称为不好的做法,尽管这些文章从未说明为什么?我认为这意味着“使用父范围”。是否在我的应用程序中引入安全漏洞?有更好的方法吗?提前致谢。