我使用Kohana的,只是发现了这片代码嵌入自动加载方法动态创建子类
// Class extension to be evaluated
$extension = 'class '.$class.' extends '.$class.'_Core { }';
// Start class analysis
$core = new ReflectionClass($class.'_Core');
if ($core->isAbstract())
{
// Make the extension abstract
$extension = 'abstract '.$extension;
}
// Transparent class extensions are handled using eval. This is
// a disgusting hack, but it gets the job done.
eval($extension);
基本上它的作用是,当我指的是不存在的类(通过实例化对象,调用class_exists()等),Kohana将创建一个类(例如.Foo),它扩展了遵循特定命名约定(例如Foo_Core)的库类。只是很好奇,有没有办法做类似的事情,但没有使用eval?