PHP 全球对比 Javascript 全球
PHP Global vs Javascript Global
当我学习javascript时,书籍或技术文章作者强调了全局变量问题,a.k.a应该始终尽量避免使用全局变量。我认为原因之一是避免命名冲突。而且我认为无论我们使用什么语言,命名冲突总是一个问题。
然而,当我阅读 PHP 书籍时,并没有特别提到或标记为不好的做法使用全局变量。那要注意吗?
例如,我试图在 Joomla 中修改一些 PHP 文件。如果我在模块的模板文件中写了一个自定义函数 getJson()
,我怎么知道这个函数名没有被其他组件使用?
调查是您所处情况的关键。
确保在您的开发环境中设置了 error_reporting(E_ALL);
。
在创建函数之前,运行 对所有 PHP 文件进行递归搜索,寻找 function getJson(
[=45 的某种组合=]
我不熟悉 Joomla,但如果使用 namespacing 那么你可能会 运行 误报。
如果正在使用命名空间,请参考第一点 - error_reporting(E_ALL);
,确保不会 运行 陷入命名空间冲突
像老板一样使用命名空间(需要 PHP 5.3.0 或更高版本):
namespace NameSpaceThatIsDefinitelyNotUsedanywhereksdgbdihjfgbdfbgd{
function getJson(){}
}
use NameSpaceThatIsDefinitelyNotUsedanywhereksdgbdihjfgbdfbgd\getJson as getJson;
getJson($args);
#2 的说明
- 选择你的目录
- 仅搜索 PHP 个文件
- 告诉它你想搜索
function getJson(
- 点击"Find All"
你的第一个问题是关于变量的,第二个问题是关于函数名的。
使用全局变量是不好的做法吗?
是的,如果您使用了太多变量而失去了对用法的概述!
想想一个有 20 名编码员的编码员团队在一个有 1000 多个文件的大项目上。
不,如果你明智地使用全局变量。
像大多数框架一样。
主题:TO OOP 或 NOT TO OOP(面向对象编程)
So shall I pay attention to it?
在你的情况下,使用 Joomla,你应该看看 Joomla 如何以及为了什么使用全局变量。并以这种方式使用它们。
在您的其他项目中,为它们提供自定义用法,例如:全局变量仅用于 class 个实例。
一切都与您的编码方式有关,更多的 OOP 或更多的 PROCEDUAL 或全部混在一起....
php是一个很大的开放世界。
how do I know the function name is not being used somewhere by other
components?
function_exists('getJson'); ;)
无论如何,对于这个问题 php 有命名空间。
namespace MySpace {
function getJson(){}
}
use MySpace\getJson as getJson;
getJson($args);
你应该阅读一下它。
if I write a custom function getJson() in a template file
你可以用匿名函数来做:
$getJson = function(){};
而不是创建全局函数。
如果该功能仅在本模板中使用!
希望对您有所帮助。
当我学习javascript时,书籍或技术文章作者强调了全局变量问题,a.k.a应该始终尽量避免使用全局变量。我认为原因之一是避免命名冲突。而且我认为无论我们使用什么语言,命名冲突总是一个问题。
然而,当我阅读 PHP 书籍时,并没有特别提到或标记为不好的做法使用全局变量。那要注意吗?
例如,我试图在 Joomla 中修改一些 PHP 文件。如果我在模块的模板文件中写了一个自定义函数 getJson()
,我怎么知道这个函数名没有被其他组件使用?
调查是您所处情况的关键。
确保在您的开发环境中设置了
error_reporting(E_ALL);
。在创建函数之前,运行 对所有 PHP 文件进行递归搜索,寻找
[=45 的某种组合=]function getJson(
我不熟悉 Joomla,但如果使用 namespacing 那么你可能会 运行 误报。
如果正在使用命名空间,请参考第一点 -
error_reporting(E_ALL);
,确保不会 运行 陷入命名空间冲突
像老板一样使用命名空间(需要 PHP 5.3.0 或更高版本):
namespace NameSpaceThatIsDefinitelyNotUsedanywhereksdgbdihjfgbdfbgd{ function getJson(){} } use NameSpaceThatIsDefinitelyNotUsedanywhereksdgbdihjfgbdfbgd\getJson as getJson; getJson($args);
#2 的说明
- 选择你的目录
- 仅搜索 PHP 个文件
- 告诉它你想搜索
function getJson(
- 点击"Find All"
你的第一个问题是关于变量的,第二个问题是关于函数名的。
使用全局变量是不好的做法吗?
是的,如果您使用了太多变量而失去了对用法的概述! 想想一个有 20 名编码员的编码员团队在一个有 1000 多个文件的大项目上。
不,如果你明智地使用全局变量。 像大多数框架一样。
主题:TO OOP 或 NOT TO OOP(面向对象编程)
So shall I pay attention to it?
在你的情况下,使用 Joomla,你应该看看 Joomla 如何以及为了什么使用全局变量。并以这种方式使用它们。
在您的其他项目中,为它们提供自定义用法,例如:全局变量仅用于 class 个实例。
一切都与您的编码方式有关,更多的 OOP 或更多的 PROCEDUAL 或全部混在一起.... php是一个很大的开放世界。
how do I know the function name is not being used somewhere by other components? function_exists('getJson'); ;)
无论如何,对于这个问题 php 有命名空间。
namespace MySpace {
function getJson(){}
}
use MySpace\getJson as getJson;
getJson($args);
你应该阅读一下它。
if I write a custom function getJson() in a template file
你可以用匿名函数来做:
$getJson = function(){};
而不是创建全局函数。 如果该功能仅在本模板中使用!
希望对您有所帮助。