我想创建一个需要选择文件的“加载器类”。
所以我可以打电话给例如。 loader :: load('systemLibraries,'applicationLibraries')。
所以在这个load()方法中我将使用require。但我试过这个,似乎所需的文件不能在课外使用。
如何让它全局访问?
答案 0 :(得分:2)
这应该可以正常工作:
class Loader{
function load($class_name)
{
require($class_name ".php");
}
}
Loader::load("MyClass");
$class = new MyClass;
鉴于MyClass位于“MyClass.php”
另一方面,这将无法正常工作
class Loader{
function load($class_name)
{
require($class_name ".php");
$class = new $class_name;
}
}
Loader::load("MyClass");
$class->doSomething();
如果include.php
看起来像这样
$var = "Hi";
你不能这样做:
Loader::load("include");
echo $var;
由于存在范围问题。
您需要向我们提供有关您尝试访问的 的更多信息。
答案 1 :(得分:1)
是的,正如Chacha指出的那样,请确保在loader类之外创建类的实例。由于您使用了系统通常始终需要的术语系统库,因此您可以使用__autoload magic function自动将它们全部包含在内。