> 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