自动类,包括PHP和实例创建

自动类,包括PHP和实例创建,php,oop,class,Php,Oop,Class,目前在一个应用程序中,我包含一个目录中的类(任何数量的类都可以放到这个目录中)。虽然我想更进一步,能够从这些文件创建类实例或类名数组class。。。当类文件被放到文件夹中时,这是否可能?下面是我当前用于包含这些文件的代码(php4 compat) 如果包含类文件,可以使用获取类名列表。根据对象的构造函数的不同,构造对象可能会有点困难。如果没有一个构造函数接受(必需)参数,则可以遍历列表并分别构造其中一个。否则,您可能需要使用反射来确定需要传递给每个类的参数 您可能想问自己为什么要这样做,以及是否

目前在一个应用程序中,我包含一个目录中的类(任何数量的类都可以放到这个目录中)。虽然我想更进一步,能够从这些文件创建类实例或类名数组class。。。当类文件被放到文件夹中时,这是否可能?下面是我当前用于包含这些文件的代码(php4 compat)


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


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

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


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

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


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

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


然而,您正在重新发明自动加载功能,请在21世纪加入我们并使用它。这是特别推荐的,因为在您的方法中,要确保每个依赖项都以正确的顺序得到解决更为复杂。不要这样做。

加入21世纪的我们,使用它。这是特别推荐的,因为在您的方法中,要确保每个依赖项都以正确的顺序得到解决更为复杂。只是不要这样做。

对于
glob
作为一个数组的回归,你不是有点过于偏执吗?:)你需要使用Autoload()LOL@Deceze。。。我想是的。我没看见that@Dezigo这是事实,尽管需要是php4 compat,主要的一点是我需要能够实例化这些类,而不知道这些文件中的类名可能是什么?对于返回
glob
作为一个数组,你不是有点过分偏执吗?:)你需要使用Autoload()LOL@Deceze。。。我想是的。我没看见that@Dezigo这是正确的,尽管需要是php4 compat,主要的一点是我需要能够实例化这些类,而不知道这些文件中的类名是什么?然后我如何在不知道它们是什么的情况下实例化这些类?我想我会进入自动加载。。。但我必须说服客户机转到PHP5,然后我如何在不知道这些类是什么的情况下实例化它们?我想我会进入自动加载。。。但我必须说服客户机转到PHP5,所有类都将遵循预定义的继承和结构。尽管无法获取已声明的类,但获取所有已声明的类…所有类都将遵循预定义的继承和结构。虽然无法获取已声明的类,但获取所有已声明的类。。。
// 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);
        }
    }
}