我脚本的同一目录中有一个PHP文件列表。它们都遵循命名约定(例如class.foo.php)。当我的脚本运行时,我希望它包含这些文件。这很简单,可以执行scandir
个文件,在结果数组中的每个项目中进行测试,然后include
文件。
问题是如何在我的脚本中创建这些类的实例(也是一个类)?文件class.foo.php
中会包含class Foo
。我需要创建一个Foo
的实例(有时只是访问一个静态方法)。我不能在正在运行的脚本中执行此操作,因为它不知道自动包含的类。
get_included_files
没用,因为它返回了类链中的所有包含文件(我只对运行脚本中包含的类感兴趣)。
也许我会以错误的方式解决这个问题。我有什么办法“自动包含”类文件并在运行脚本中使用它们?
答案 0 :(得分:4)
创建自动加载功能并注册:spl_autoload_register
正确的自动加载功能将在实例化类时加载相应的文件。
来自php.net的例子:
function my_autoloader($class) {
include 'classes/' . $class . '.class.php';
}
spl_autoload_register('my_autoloader');
答案 1 :(得分:2)
您可以使用__autoload()
魔法。见这个例子:
./ myClass.php
<?php
class myClass {
public function __construct() {
echo "myClass init'ed successfuly!!!";
}
}
?>
./的index.php
<?php
// we've writen this code where we need
function __autoload($classname) {
$filename = "./". $classname .".php";
include_once($filename);
}
// we've called a class ***
$obj = new myClass();
?>
输出:
myClass init'ed successfuly!!!
阅读更多内容: