Re: context when calling non static method of class in a static way

From: Date: Sun, 22 May 2011 14:47:46 +0000
Subject: Re: context when calling non static method of class in a static way
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-313075@lists.php.net to get a copy of this message
Simon, You may want to be careful with the way you declare your class methods. Example: public function bar() != static function bar(), even if you use pnysudsfksdljfasdjfsd (::) See the example below. class Foo{ static function barStatic() { echo get_class($this); } public function barPublic() { echo get_class($this); } } class Foobar{ public function callBarStatic() { Foo::barStatic(); } public function callBarPublic() { Foo::barPublic(); } } $oo = new Foobar; $oo->callBarStatic(); // returns only Foo $oo->callBarPublic(); // returns Foobar On May 22, 2011, at 10:17 AM, Simon Hilz wrote: > hi, > > lets assume the following classes: > > class Foo{ > > public function bar() > { > echo get_class($this); > } > > } > > class Foobar{ > > public function callBarStatic() > { > Foo::bar(); > } > > } > > the following code results in the output "Foobar": > > $obj = new Foobar(); > $obj->callBarStatic(); > > That means that the static call of bar() is executed in the context of Foobar. Is this behavior > deliberate? If so, it would open a great way of object composition patterns. But only if it will be > retained in future versions :) (i've tested with 5.3.5) > > > Simon Hilz > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php >

« previous php.general (#313075) next »