這可能相當奇怪,但我想製作一個類掃描儀。PHP類掃描儀
比方說,我希望做一個REST的路線,但我懶得寫航線爲每個類。所以,我的文件夾結構如下:
lib
|-router.php
service
|-modulea
|-this.php
|-that.php
|-moduleb
|-notthis.php
|-notthat.php
內部服務類,我就會把註釋像
class This {
/**
* @path this/@id
*/
public function get($id) {
}
}
現在,如果我想掃描服務文件夾中的所有類,然後調用
Router->register('this/@id', 'This->get(@id)')
我的問題是,實現它的最好方法是什麼?
對於掃描,我認爲這是一個昂貴的過程。所以我打算放一臺掃描儀,然後創建一個文件,當它檢測到文件夾結構發生變化時將被重寫。但是,如何在通話期間有效檢測文件夾中的更改,使緩存無效並重新掃描?我真的不想每N次重新掃描一次。所以我想做一個校驗和,只有當檢測到變化時重新掃描。這個數據文件將被用來通過Router類來提供路由數據。
對於註釋,我計劃按照PHPDoc的標準語法,但什麼是閱讀@Path註釋的有效途徑?我應該使用ReflectionClass,還是隻更好地get_file_contents並解析它?因爲我認爲我不需要實例化類,只收集所有信息並將它們放入序列化文件中。
注意:我不是在尋找框架。我正在尋找一種方法來編譯所有控制器的列表,並將它們提供給框架。
謝謝
ReflectionClass是非常適合你的目的。 http://php.net/manual/de/class.reflectionclass.php – Xatenev