php从类文件列表中创建对象

时间:2012-04-24 10:25:35

标签: php class object auto-generate

我的项目中有文件目录CLASSES。

../classes/class.system.php
../classes/class.database.php
...

我将每个类拉出来并使用以下代码将其包含在主index.php中:

// load classes
foreach (glob("classes/class.*.php") as $filename) {
    require_once $filename;
}

然后我创建(手动编写)对象,例如:

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

问:如何在不编写目录的情况下从目录CLASSES中的文件列表中为每个类自动生成对象?

感谢您的回答和代码。

编辑:

我的工作解决方案

// 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();
}

3 个答案:

答案 0 :(得分:2)

如果您遵循典型模式,则在创建

等文件时
  

class.<classname>.php

然后

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

}

答案 1 :(得分:0)

我不认为用glob加载所有课程,如果你需要或不包括它们,那么这些课程的表现是有效的或好的。如果您有500 different classes ???

,该怎么办?

为什么不利用PHP自动加载功能,请参阅http://php.net/manual/en/language.oop5.autoload.php,这只会加载您需要的课程

示例

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

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

答案 2 :(得分:0)

// 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();
}