我有一個Web應用程序,我剛從5.3更新到5.5在我的服務器上,我得到像下面200-300錯誤。我知道這是一個貶低錯誤,是否有可能一次性解決所有問題,而不是隱藏錯誤?靜態調用錯誤,同時更新php版
Strict standards: Non-static method xyz() should not be called statically.
我有一個Web應用程序,我剛從5.3更新到5.5在我的服務器上,我得到像下面200-300錯誤。我知道這是一個貶低錯誤,是否有可能一次性解決所有問題,而不是隱藏錯誤?靜態調用錯誤,同時更新php版
Strict standards: Non-static method xyz() should not be called statically.
調用非靜態方法會靜態生成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。
只是使功能靜態。 該修復程序是一個簡單的修復程序,但它必須在您以這種方式調用靜態方法的所有地方完成。我認爲沒有別的辦法。
這很容易解決這個問題。你錯過了某些函數的'static'關鍵字。所以你有'function'(例如)並靜態調用它。它需要是「公共/保護/私人靜態功能」。 – Andrew
但它出現在200個文件中。我不知道我在哪裏糾正它 –
你必須親手做。我無法真正想到其他任何方式。 – Andrew