天天看點

php反射的使用

說到反射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

php