2015-05-05 25 views
2

我有一個Web應用程序,我剛從5.3更新到5.5在我的服務器上,我得到像下面200-300錯誤。我知道這是一個貶低錯誤,是否有可能一次性解決所有問題,而不是隱藏錯誤?靜態調用錯誤,同時更新php版

Strict standards: Non-static method xyz() should not be called statically. 
+0

這很容易解決這個問題。你錯過了某些函數的'static'關鍵字。所以你有'function'(例如)並靜態調用它。它需要是「公共/保護/私人靜態功能」。 – Andrew

+0

但它出現在200個文件中。我不知道我在哪裏糾正它 –

+0

你必須親手做。我無法真正想到其他任何方式。 – Andrew

回答

0

調用非靜態方法會靜態生成E_STRICT級別警告。

函數xys不是靜態的,而是靜態地被clled。見下面的區別。

<?php 

// Calling non-static function, first create object by class 
$foo = new Foo(); 
$foo->xyz(); 

// Calling static function (you are doing this) 
Foo::xyz(); 

?> 

你應該像這樣定義你的函數。找到xyz的定義。

public static function xyz(){} 

然後它不會拋出嚴格的標準錯誤。只需添加static到您的功能和所有錯誤將消失。

您不必在所有200個文件中更改它。該功能僅在200個文件中調用。這並不意味着你有所有的bug。

注:從文檔

由於靜態方法是沒有創建的對象的實例調用,僞變量$ this不可聲明爲static方法內。

因此,如果您在功能xyz中使用$this,您必須使用我的第一個示例。然後它意味着修復所有200個文件。

請參閱文檔static keyword

0

只是使功能靜態。 該修復程序是一個簡單的修復程序,但它必須在您以這種方式調用靜態方法的所有地方完成。我認爲沒有別的辦法。