0

好吧,如果我做类似的事情:

引导.php:

function boot($c) { require 'mods/'.$c.'.php'; }
spl_autoload_register('boot');

索引.php

require 'boot.php';

class Father {
function __construct()
{
/* get all modules in database then loop it like: */
foreach($mods as $v) eval('$cmod = new '.$v.'()');
}
}
new Father();

类模块示例:

class mod01 extends Father {

function __construct() { //code }

}

我想知道使用 eval 是好是坏,我正在使用它,因为我不知道它将来自 db 的 mods 的名称。

4

2 回答 2

3

你不需要eval()。(如果没有必要,干脆不要使用它)

foreach($mods as $v)
    $cmod = new $v();

也可以。

于 2013-07-02T22:50:59.787 回答
0

无论哪种方式,您都可以这样做,并且仍然可以访问新创建的类。

$classes = array() ;
foreach($mods as $v){
  $classes[] = new $v(); //Whats the point of rewriting $cmod?
}

您只需在每次迭代中重写对对象的引用,因此将引用存储在数组中。

于 2013-07-02T22:52:06.817 回答