如何在類構造函數中獲取調用方法名稱,get_called_class()爲我提供了實例化的擴展類的名稱,但是如何獲取方法的名稱在那個班上被稱爲? 我需要這個生產狀態,因此debug_backtrace()是不是一個很好的解決方案。如何在沒有debug_backtrace的__construct中調用函數名稱
0
A
回答
1
爲什麼需要這個?如果您有任何考慮項目和標準的其他編碼人員,找到一個解決方案,而不是要求構造函數知道它是如何被稱爲。如果所有其他解決方案失敗,定義一個靜態工廠方法,使構造私人已有實例更多的控制。
0
如果你不想使用debug_backtrace()函數,你也可以拋出並捕獲異常,獲得回溯。
但是,這也難看......總之:
try
{
throw new Exception();
}
catch(Exception $e)
{
print_r($e->getTrace());
}
我不知道爲什麼你需要調用者。也許你可以通過使用不同的邏輯來解決這個問題。
它應該比得到一個更好的回溯...
編輯
異常不需要被拋出。對不起,這部分。
所以,你可以簡單地使用:
$e = new Exception();
print_r($e->getTrace());
但再次,你不應該需要用這個!
0
它看起來像有沒有辦法得到它沒有debug_backtrace()
。你仍然可以爲此創建你的功能。從manual例如:
function get_caller_method()
{
$traces = debug_backtrace();
if (isset($traces[2]))
{
return $traces[2]['function'];
}
return null;
}
0
有較遲緩/醜debug_backtrace這樣做其它,或通過名稱作爲參數傳遞給構造函數的沒有自動的方式....但你真的不應該被這些建設種類的依賴到你的類中。
相關問題
- 1. PHP5 __construct沒有調用,沒有錯誤
- 2. 如何在知道函數名稱的類中調用函數?
- 3. 有沒有辦法在被調用者中獲得調用函數的名稱?
- 4. __construct函數沒有按預期工作
- 5. 如何通過setInterval/setTimeout函數中的名稱調用函數?
- 6. 調用成員函數prepare()null,如果__construct函數存在
- 7. 使用php調用函數__construct
- 8. 有沒有辦法在actionscript2中找到調用函數的名稱?
- 9. 如何在JavaScript中獲取調用函數的名稱?
- 10. 如何在PHP中獲取調用函數/方法的名稱?
- 11. 如何調用名稱在字符串中定義的函數?
- 12. 如何調用名稱存儲在變量中的函數?
- 13. 調用函數名稱
- 14. 如何獲取調用當前函數的函數名稱?
- 15. 如何在C++中通過名稱(std :: string)調用函數?
- 16. 如何通過名稱調用私有函數
- 17. 如何在沒有名稱的<form>中設置名稱:?
- 18. 調用javascript函數名稱在變量
- 19. 在函數內調用列名稱
- 20. 我在調用函數時如何傳遞參數名稱?
- 21. 如何通過名稱調用R函數中的data.frame
- 22. VB.Net如何調用從表中檢索的函數名稱?
- 23. 如何獲取C#中調用函數的名稱?
- 24. 如何調用從JavaScript中的PHP函數指定其名稱
- 25. 如何在V8中調用沒有參數的函數?
- 26. 如何使用R中函數名稱的字符串調用函數?
- 27. 如何從.erb文件中的函數調用中提取函數名稱?
- 28. 如何在C++中調用函數時打印每個函數名稱?
- 29. 使用Clojure中函數名稱的字符串調用函數
- 30. 無法在PHP中通過他們的名稱調用__construct()變量
不能使用簡單的使用:'$ e = new Exception; $ E-> getTrace()'?是否需要拋出,以獲得痕跡? – NikiC 2010-07-22 12:15:24
我是這麼認爲的,但我只是測試,並沒有,它不需要被拋出。 – Macmade 2010-07-22 12:23:00