php从类文件列表创建对象

php从类文件列表创建对象,php,class,object,auto-generate,Php,Class,Object,Auto Generate,我的项目中有包含文件的目录类 ../classes/class.system.php ../classes/class.database.php ... 我提取每个类并将其包含到main index.php中,代码如下: // load classes foreach (glob("classes/class.*.php") as $filename) { require_once $filename; } 然后我创建(手动写入)对象,例如: $system = new System

我的项目中有包含文件的目录类

../classes/class.system.php
../classes/class.database.php
...
我提取每个类并将其包含到main index.php中,代码如下:

// load classes
foreach (glob("classes/class.*.php") as $filename) {
    require_once $filename;
}
然后我创建(手动写入)对象,例如:

$system = new System();
$database = new Database();
...
问:我如何从目录类中的文件列表中自动为每个类生成对象而无需编写它们

谢谢你的回答和代码

编辑: 我的工作方案

// load classes
foreach (glob("classes/class.*.php") as $filename) {
    require_once $filename;
    $t = explode(".",$filename);
    $obj = strtolower($t[1]);
    $class = ucfirst($t[1]);
    ${$obj} = new $class();
}

如果您遵循典型的模式,在创建这些文件时

class..php

然后


我不认为使用
glob
加载所有类并在需要或不需要时包含它们是有效的,或者是从性能角度考虑的好主意。如果您有
500个不同的类怎么办??

为什么不利用
PHP
auto-loading查看哪个只加载所需的类

范例

function __autoload($className) {
    require_once "classes/class." . $className . ".php";
}

$system = new System();
$database = new Database();

我需要生成$system=newsystem();在php页面内部,因此这将不起作用。变量$obj没有定义,类必须有大写的第一个字母,类的名称后面必须有“()”。我认为类后面缺少“();”,更好的解决方案是使用ucfirst()function@ing.MichalHudak,是的,我错过了括号…,并且纠正了ucfirst()的错误。你对glob()函数也有看法。但是这个项目只有不到20门课。这方面的好处是,我可以在1.20类中创建对象自动加载类,而现在它肯定会增长。。。。尝试使用最佳实践。。。。包括20级和1级。。肯定会有不同
function __autoload($className) {
    require_once "classes/class." . $className . ".php";
}

$system = new System();
$database = new Database();
// load classes and create objects
foreach (glob("classes/class.*.php") as $filename) {
    require_once $filename;
    $t = explode(".",$filename);
    $obj = strtolower($t[1]);
    $class = ucfirst($t[1]);
    // create object for every class
    ${$obj} = new $class();
}