Re: non static function called as static one

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux