在一般编程中,globals是不好的做法:
你不能轻易地在一个地方看到全局函数的用法,而看到所有其他用法,例如在哪里设置或稍后将读取全局函数如果变量的使用或格式发生变化,您可以在许多地方更改该变量的使用这使得您很难对代码进行可靠的更改,也很难调试在何处/谁设置了全局其他代码可能会意外地重写您的变量然而,Wordpress是一段庞大的PHP代码,如果您想编写在Wordpress的许多不同位置访问相同信息的代码,globals是一种不用编写复杂数据结构就能实现这一点的方法,插件确实使用它们来实现这一点,因为其他解决方案可能会更加复杂或不必要
您可以做一些事情来尽可能安全和无bug地使用globals,以下是一些建议:
给您的global起一个非常独特的描述性名称。E、 g.$mozboz\\u highscoreplugin\\u分数。这可以防止其他代码意外覆盖您的gglobal时可能发生的冲突
记录全球某处的使用情况!E、 g.在插件顶部,描述它使用的globals以及如何使用
如果你是一个更高级的PHP程序员,你可能想尝试做一些更聪明的事情,比如把所有变量放在一个带有数组的全局变量中,或者甚至放在一个对数据有更多控制的类中,这样可能更容易调试。例如:
代替:
global $my_plugin_variable1;
global $my_plugin_variable2;
$foo = $my_plugin_variable1 + $my_plugin_variable2;
试试看:
global $my_plugin_datastore;
$foo = $my_plugin_datastore[\'var1\'] + my_plugin_datastore[\'var2\']
类和单例的使用更高级,但可能会给您带来一些好处,因为它允许您包装和传递插件程序中的所有函数和变量。E、 g.在给出的示例中,您可能希望能够调用
test()
从任何地方,在这种情况下,从任何地方都能做到这一点可能会很好:
$myplugin_object = getPluginInstance();
$foo = $myplugin_object->test();