有時候我們需要修改別人源碼里的代碼,卻找不到對應的函數放在了哪兒,就可以用使用本文介紹的辦法,幫你快速定位函數位置。特別是某些寫法不規范的WordPress主題,各種模塊,函數到處放,找半天的那種。那么WordPress如何快速定位PHP函數所在文件位置及代碼行號?
使用同名函數
這個方法很簡單,就是利用PHP不支持函數重載原理實現的,也就是說不能存在相同命名的函數。當出現同名函數時,PHP會拋出致命錯誤,并終止程序運行。
Fatal error: Cannot redeclare (a) (previously declared in (b)) in (c) on line (d)
出現上述提示時,就說明你的函數出現了同名。
a—-表示重復定義的函數名;
b—-第一次定義該函數時的文件名稱及行號;
c—-第二次定義該函數時的文件名稱;
d—-第二次定義該函數時的行號。
對應函數所處位置都輸出了,非常清楚。但是,有些環境關閉了提示,PHP會直接返回HTTP500錯誤,我們這個方法就失效了。
PHP反射類輸出函數位置
這個方法就比較好了,出來對PHP版本有限制外,都可以使用,當然,除了古老的PHP5.2以下版本不能用,其它都是OK的。
Reflection::export(new ReflectionFunction('函數名'));
使用方法,在你要定位的函數文件中,使用上述代碼,即可。
Function [ function get_exc ] { @@ D:\phpStudy\WWW\wp-content\themes\mytheme\functions.php 118 - 130 - Parameters [1] { Parameter #0 [ $ID ] } }
輸出很詳細,不僅有函數名稱,所處文件位置,函數所在起始行、結束行還有函數有幾個參數,參數是什么都給顯示了出來,非常好用!推薦!