Re: non static function called as static one
| From: | Nathan Rixham | Date: | Wed, 11 Mar 2009 22:49:38 +0000 |
| Subject: | Re: non static function called as static one | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-289904@lists.php.net to get a copy of this message | ||
Jochem Maas wrote:
Olivier Doucet schreef:poor internal developers, they do have a tough job the message is pretty clear: "Strict Standards: Non-static method MyTest::myfunc() should not be called statically, assuming $this from incompatible context in.." but the functionality is pretty weird, took me a while to get my head around.. until i came up with the scenario: "what if this 'error' halted the compiler and threw a proper error" then I imagined the massive outcry from the developers of millions of poorly coded scripts then I remembered php 4 and ran this: <?php error_reporting(E_STRICT); class MyTest {Hi Jochem,if your not gettting a 'Strict Warning' when calling a non-static method statically then error_reporting doesn't include E_STRICT. I tested this with your example code on the cmdline to make sure.Yes, that's what I'm using right now. Although, that's not the highlighted problem.2/ (or/and) Raise a warning or an error if a non static function iscalledas a static onedevelop with error_reporting set to E_ALL | E_STRICT, then you'll get a big fat warning about itI here that alot :-)[...] the pragmatic solution is to not call non-static functions using static syntax.Well, this is the answer I didn't want :)Thank you for your feedback ! Olivier
function myfunc() {
echo get_class($this);
}
}
class MySecondTest {
function test() {
MyTest::myfunc();
}
}
$test = new MySecondTest();
$test->test(); //output: "MySecondTest"
?>
and it all became clear
mental though, part of me wishes they'd forked php at 4 to save all the lame syntax and weirdness.