1
我想強調PHP異常。請看下面的代碼:php typecast構造函數
class myException extends Exception {
function __construct($mOrigin = "", $iCode = 0, Exception $oPrevious = null){
if(is_string($mOrigin)){
parent::__construct($mOrigin, $iCode, $oPrevious);
} elseif ($mOrigin instanceof Exception) {
parent::__construct($mOrigin->getMessage(),$mOrigin->getCode(),$mOrigin->getPrevious());
$this->file = $mOrigin->getFile();
$this->line = $mOrigin->getLine();
} else {
parent::__construct("\$mOrigin has wrong type", self::eFatal, $oPrevious);
}
}
的想法是把一個標準的異常成myException保留原堆棧跟蹤。由於包含跟蹤的變量是私有的,我不能立即複製這些值,並且CTOR爲myException生成一個新的值。
第一個想法當然是使用克隆,但我幾乎不能重新分配$ this,對嗎?
所以我想要做的是一個C++風格的typecast CTOR。 PHP中有這樣一個明智的範例嗎?
因爲'trace'和'previous'是** private **到'Exception'。 – 2012-07-12 17:52:43
足夠公平 - 奇怪的是,上面的代碼運行W/O錯誤或通知甚至W /'error_reporting = E_ALL | E_STRICT',看看它是否適合你。 – quickshiftin 2012-07-12 18:08:45
好主,看起來像PHP根本不會抱怨,當你試圖設置一個私人價值的方式,當你從一個子類調用私人方法......,我有另一個想法;我會在一分鐘後發佈。 – quickshiftin 2012-07-12 18:19:05