2010-07-22 38 views

回答

1

爲什麼需要這個?如果您有任何考慮項目和標準的其他編碼人員,找到一個解決方案,而不是要求構造函數知道它是如何被稱爲。如果所有其他解決方案失敗,定義一個靜態工廠方法,使構造私人已有實例更多的控制。

0

如果你不想使用debug_backtrace()函數,你也可以拋出並捕獲異常,獲得回溯。

但是,這也難看......總之:

try 
{ 
    throw new Exception(); 
} 
catch(Exception $e) 
{ 
    print_r($e->getTrace()); 
} 

我不知道爲什麼你需要調用者。也許你可以通過使用不同的邏輯來解決這個問題。
它應該比得到一個更好的回溯...

編輯

異常不需要被拋出。對不起,這部分。
所以,你可以簡單地使用:

$e = new Exception(); 
print_r($e->getTrace()); 

但再次,你不應該需要用這個!

+0

不能使用簡單的使用:'$ e = new Exception; $ E-> getTrace()'?是否需要拋出,以獲得痕跡? – NikiC 2010-07-22 12:15:24

+1

我是這麼認爲的,但我只是測試,並沒有,它不需要被拋出。 – Macmade 2010-07-22 12:23:00

0

它看起來像有沒有辦法得到它沒有debug_backtrace()。你仍然可以爲此創建你的功能。從manual例如:

function get_caller_method() 
{ 
    $traces = debug_backtrace(); 

    if (isset($traces[2])) 
    { 
     return $traces[2]['function']; 
    } 

    return null; 
} 
0

有較遲緩/醜debug_backtrace這樣做其它,或通過名稱作爲參數傳遞給構造函數的沒有自動的方式....但你真的不應該被這些建設種類的依賴到你的類中。

相關問題