PHP 全球对比 Javascript 全球

PHP Global vs Javascript Global

当我学习javascript时,书籍或技术文章作者强调了全局变量问题,a.k.a应该始终尽量避免使用全局变量。我认为原因之一是避免命名冲突。而且我认为无论我们使用什么语言,命名冲突总是一个问题。

然而,当我阅读 PHP 书籍时,并没有特别提到或标记为不好的做法使用全局变量。那要注意吗?

例如,我试图在 Joomla 中修改一些 PHP 文件。如果我在模块的模板文件中写了一个自定义函数 getJson(),我怎么知道这个函数名没有被其他组件使用?

调查是您所处情况的关键。

  1. 确保在您的开发环境中设置了 error_reporting(E_ALL);

  2. 在创建函数之前,运行 对所有 PHP 文件进行递归搜索,寻找 function getJson(

    [=45 的某种组合=]

我不熟悉 Joomla,但如果使用 namespacing 那么你可能会 运行 误报。

  1. 如果正在使用命名空间,请参考第一点 - error_reporting(E_ALL);

  2. ,确保不会 运行 陷入命名空间冲突
  3. 像老板一样使用命名空间(需要 PHP 5.3.0 或更高版本):

namespace NameSpaceThatIsDefinitelyNotUsedanywhereksdgbdihjfgbdfbgd{
    function getJson(){}
}
use NameSpaceThatIsDefinitelyNotUsedanywhereksdgbdihjfgbdfbgd\getJson as getJson;

getJson($args);

#2 的说明

  1. 选择你的目录
  2. 仅搜索 PHP 个文件
  3. 告诉它你想搜索function getJson(
  4. 点击"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(){};

而不是创建全局函数。 如果该功能仅在本模板中使用!

希望对您有所帮助。