有沒有辦法檢查文件中是否存在類,而不包括/需要該類?檢查文件中是否存在類而不要求/包括
喜歡的東西:class_in_file($file);
正如我已經提到的,我知道這可以要求/包括類,然後查找class_exists($class);
來完成,但其他方法嗎?
有沒有辦法檢查文件中是否存在類,而不包括/需要該類?檢查文件中是否存在類而不要求/包括
喜歡的東西:class_in_file($file);
正如我已經提到的,我知道這可以要求/包括類,然後查找class_exists($class);
來完成,但其他方法嗎?
$tokens = token_get_all(file_get_contents('foo.php'));
然後通過標記查看是否可以發現某個T_CLASS
條目。
http://www.php.net/manual/en/function.token-get-all.php
http://www.php.net/manual/en/tokens.php
PHP只知道,如果它已經加載(解析)他們(假定他們不是內置)定義的文件中有階級存在。如果你有一個明確定義的結構(也許你正在使用自動加載),你可以通過檢查定義它的文件是否存在來檢查一個類是否存在。例如if (file_exists('<path to app>/lib/Myapp/Util/Http.php'))
可用於檢查您的應用程序目錄中是否存在Myapp_Util_Http
類。儘管如此,不能保證類確實存在於該文件中。爲此,您必須包含/需要它,閱讀並解析它,或使用自動加載並嘗試使用它。
php文件是一個文本文件,你可以打開它,以便找到一個 類聲明解析它。
它不是一個簡單的過程,但一個好的解析器應該使任務變得簡單。
你必須重拳出擊註釋行,包含類聲明的字符串可以觸發誤報,here文檔往往使事情更加複雜。 Evals也應該考慮在內。
如果你有機會到PHP命令行解釋器,那麼你可以看看這條意見和空格爲你做侑以良好的工作一半你-w開關。
簡短的答案是否定的。只有解決方法。例如,你可以分析自己的文件(可能使用token_get_all
),或者在頂部像
<?php
/** #has_class(CLASSNAME)
*/
評論莫名其妙地標記文件並讀取頭幾行尋找這與preg_match
。
哦,不....因爲它劇照需要文件,以檢查是否在該文件中存在的類....不然怎麼回事就它知道嗎?如果你有一個class_in_file,它仍然需要讀取文件。 – Flukey
如果你解釋爲什麼你認爲你需要這個,它會幫助很多人。 – CodeCaster
@Jamie我認爲他的意思是'include'和'require',它們不同於只讀文件。 – deceze