好吧,如果我这样做:
boot.php:
function boot($c) { require 'mods/'.$c.'.php'; }
spl_autoload_register('boot');
的index.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的mod的名称。
答案 0 :(得分:3)
您不需要eval()
。 (如果没有必要,就不要使用它)
foreach($mods as $v)
$cmod = new $v();
也适用。
答案 1 :(得分:0)
你可以这样做,但仍然可以访问新创建的类。
$classes = array() ;
foreach($mods as $v){
$classes[] = new $v(); //Whats the point of rewriting $cmod?
}
您只需在每次迭代中重写对象的引用,因此将引用存储在数组中。