Re: non static function called as static one

From: 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:
Hi Jochem,
2/ (or/and) Raise a warning or an error if a non static function is
called
as a static one
develop with error_reporting set to E_ALL | E_STRICT, then you'll get a big fat warning about it
Yes, that's what I'm using right now. Although, that's not the highlighted problem.
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.
[...] the pragmatic solution is to not call non-static functions using static syntax.
Well, this is the answer I didn't want :)
I here that alot :-)
Thank you for your feedback ! Olivier
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 {
    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.

« previous php.general (#289904) next »