說到反射ReflectionClass大家可能都知道了,通過将一個類的各種屬性封裝一下供使用者使用。
我一開始的時候很是疑惑,既然類的名字都知道了為啥還要用反射,網上别人給的例子讓我看來也純粹是為了反射而反射,後來看到kohana架構的源碼中對反射的使用,我了解了,一句話:反射可以用來得到一些你從類的名字中擷取不到的屬性。
代碼片段:
$extension = 'class '.$class.' extends '.$class.'_Core { }';
// Start class analysis
$core = new ReflectionClass($class.'_Core');
if ($core->isAbstract())
{
// Make the extension abstract
$extension = 'abstract '.$extension;
}
//var_dump("extension:".$extension);
// Transparent class extensions are handled using eval. This is
// a disgusting hack, but it gets the job done.
eval($extension);
這裡獲得了這個類是不是一個抽象類這個屬性。當然還有其他的屬性我們可以用
可以在php反射官方文檔中得到。
總結下來就是,如果你需要執行個體化一個類,除了類的名字外你還想知道其他的關于這個類的屬性資訊,那麼你應該用反射來得到。
轉載于:https://www.cnblogs.com/xiongji/p/3763585.html