我有一个包含类的文件。当我需要访问该类时,我将include
此文件。我想在类存在的文件中声明类,这样我只需要声明一次类,并且只需要include
文件就可以使用该类。
这是有效的。
<?php
$GLOBALS['foo_model'] = new foo_model;
$foo_model = $GLOBALS['foo_model'];
global $foo_model;
Class foo_model
{
function foo_function() {
// ect
}
}
不起作用
<?php
$foo_model = new foo_model;
global $foo_model;
Class foo_model
{
function foo_function() {
// ect
}
}
当试图使用类时,它会导致错误。
Call to a member function foo_function() on a non-object
为什么我必须从$GLOBALS
开始,然后把它变成一个正则变量,然后应用global
。我认为$GLOBALS
和global
只是语法上的不同。$GLOBALS
在这里有什么不同之处?
此外,编写包含类的文件的最佳方法是什么,这样我就可以include
该文件并使用该类,而无需在包含该文件后声明该类,也无需使用$GLOBALS
?我的第一个代码片段是实现这一点的最佳方式吗?
不要这样做,这是非常糟糕的设计。尝试使用特征。
但我看到你试图做的是创建类文件并在不包含它的情况下加载它。这就是自动加载类的概念。看看这个:http://php.net/manual/en/function.autoload.php
记住:全局变量总是有问题的,尽可能避免它们。