自动类包括和实例创建PHP

时间:2011-12-21 13:32:50

标签: php oop class

目前在应用程序中我包含目录中的类(可以将任意数量的类放入此目录中)。虽然我想更进一步,能够从这些文件中创建一个类实例或类名 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);
        }
    }
}

3 个答案:

答案 0 :(得分:4)

加入我们21世纪并使用Autoloading。这是特别推荐的,因为使用您的方法确保更复杂,每个依赖关系都以正确的顺序解决。不要这样做。

答案 1 :(得分:0)

如果您要包含类文件,则可以使用get_declared_classes()获取类名列表。根据构造函数的构造,构造对象可能会有点困难。如果没有构造函数采用(必需的)参数,则可以遍历列表并构造其中一个参数。否则,您可能需要使用反射来计算出需要传递给每个类的参数。

您可能想问问自己为什么要这样做,以及您是否确实需要每个类的一个实例。听起来你可能需要的是某种Dependency InjectionService Locator

答案 2 :(得分:0)

如果您的班级名称和文件名相同,则可以从$className创建$filename并创建实例并将其存储在$dict[md5($filename)] = new $className

然而,您正在重新发明自动加载