目前在应用程序中我包含目录中的类(可以将任意数量的类放入此目录中)。虽然我想更进一步,能够从这些文件中创建一个类实例或类名 CLASS 的数组...当类文件被放入文件夹时,这是可能的吗?下面是我目前用来包含文件的代码(php4 compat)
// Include custom field types, as drop-ins
$include_files = (array) glob( METAMAKER_FIELDS_DIR."*.php" );
if( is_array($include_files) ) {
foreach($include_files as $filename) {
if (!empty($filename) && strstr($filename, 'php')) {
include_once($filename);
}
}
}
答案 0 :(得分:4)
加入我们21世纪并使用Autoloading。这是特别推荐的,因为使用您的方法确保更复杂,每个依赖关系都以正确的顺序解决。不要这样做。
答案 1 :(得分:0)
如果您要包含类文件,则可以使用get_declared_classes()获取类名列表。根据构造函数的构造,构造对象可能会有点困难。如果没有构造函数采用(必需的)参数,则可以遍历列表并构造其中一个参数。否则,您可能需要使用反射来计算出需要传递给每个类的参数。
您可能想问问自己为什么要这样做,以及您是否确实需要每个类的一个实例。听起来你可能需要的是某种Dependency Injection或Service Locator。
答案 2 :(得分:0)
如果您的班级名称和文件名相同,则可以从$className
创建$filename
并创建实例并将其存储在$dict[md5($filename)] = new $className
然而,您正在重新发明自动加载