> imho, this is the expected behavior. At least a notice should be raised.
> I do not see a reason to define $this if a method is explicitly defined
> as static (means it should not be called dynamically). Declare the
> same funciton as public|private|protected and everything works fine.

There is no reason I can possibly imagine why methods declared as static
should be allowed to be called from a non-static context. Sure, in my
own classes I know not to call a method I declared as static from an
instance. But IMO the whole point of static is to create a restriction
in then engine keeping from anyone calling that function in anything
other than a static context. 

class foo {
        static function bar() {
                echo "Hello.\n";
        }
        
        function foobar();
}

$a = new foo;
$b->bar();

This is a completely acceptable thing, and it is IMO completely wrong to
even allow in the engine. foo::bar() should be the only accepted syntax
for static functions. If I download a new class from some site, or
otherwise use someone else's code, how do I know other than digging
through the source on a method's context? If $this isn't set I can't do
the check, and if then engine doesn't do it there isn't a way to tell
the difference.


-- 
-=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=-
John Coggeshall                   http://www.coggeshall.org/
The PHP Developer's Handbook    http://www.php-handbook.com/
-=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=--=~=-

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to