Sunday, May 20, 2018

How can I solve "Non-static method xxx:xxx() should not be called statically in PHP 5.4?



Currently using a large platform in PHP.



The server it's hosted on has recently been upgraded to PHP 5.4.



Since, I've received many error messages like:




[Sat May 26 19:04:41 2012] [error] PHP Strict Standards: Non-static method Config::getData() should not be called statically, assuming $this from incompatible context in /xxx/Config.inc.php on line 35





The example method is defined as (note the lack of 'static' keyword):



function &getData() {
$configData =& Registry::get('configData', true, null);

if ($configData === null) {
// Load configuration data only once per request, implicitly
// sets config data by ref in the registry.

$configData = Config::reloadData();
}

return $configData;
}


This has no caused a problem before, and I assume the error messages (which cause the application to crash) may be related to the recent upgrade to PHP5.4.



Is there a PHP setting I can modify to 'ignore' the lack of static keyword?



Answer



You can either remove E_STRICT from error_reporting(), or you can simply make your method static, if you need to call it statically. As far as I know, there is no (strict) way to have a method that can be invoked both as static and non-static method. Also, which is more annoying, you cannot have two methods with the same name, one being static and the other non-static.


No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...