2016-08-24 34 views
0

使用嘗試捕捉一些升級應用程序時,我剛剛ugraded到PHP7和有我的第一個問題PHP的5/7錯誤類處理

PHP7現在實現了自己的錯誤類來處理這樣的舊代碼,我有錯誤:

try { 
    dispatcher::run(new request); 
} catch (Exception $e) { 
    require_once APP_PATH . 'error.php'; 
    $error = new error($e); 
} 

現在拋出一個錯誤,因爲錯誤類是已經定義:

Cannot declare class error, because the name is already in use in [...] 

現在這得到有效解決很容易地只是重命名我的錯誤類,但它讓我知道,是有沒有辦法擴展7的錯誤類,並且可以兼容php5?

問候......

+0

這些代碼都沒有聲明一個類。 – ceejayoz

+0

@ceejayoz不,但這'$錯誤=新錯誤($ e);'試圖實例化一個 – RiggsFolly

+0

我的自定義php5錯誤類聲明是在error.php文件...我認爲這是不需要添加聲明對我的問題 – Chico3001

回答

2

短則你不應該這樣做,因爲它是一個backwards incompatible變化。

長的回答是肯定的,這是可能的,但你仍然不應該這樣做,因爲它仍然可能會導致不良行爲,仍然可能需要更改您現有的PHP 5實現。

PHP 7中的Error類實現與Exception實現的相同的Throwable接口。這個想法只是爲了區分由PHP本身和PHP代碼拋出的那些異常。所以你在這裏做什麼$error = new error($e)基本上相當於$error = new Exception($e),這將與PHP 5,向後兼容,假設你的自定義Error類與Throwable接口兼容。既然你沒有提供你的類的實現,我不能肯定地說,但一般來說,如果你還沒有在PHP 5中擴展Exception,我不知道它會是什麼。

+0

是的,你是對的,我的錯誤類是不兼容的throwable接口.... – Chico3001

+1

所以那麼答案是肯定沒有。 – Sherif

+0

我會尋找一個關於如何使用可丟棄類的教程......感謝您的幫助! – Chico3001