RE: [PHP] calling a derived static method from a base class

From: Date: Thu, 05 May 2005 17:13:34 +0000
Subject: RE: [PHP] calling a derived static method from a base class
Groups: php.general 
Request: Send a blank email to php-general+get-214560@lists.php.net to get a copy of this message
From: news [mailto:news@sea.gmane.org] On Behalf Of > <code> > class Base { > > static function f() { > self::g(); > } > > static function g() { > print("Base\n"); > } > } > > class Derived extends Base { > static function g() { > print("Derived\n"); > } > } > > Derived::f(); > </code> > > I want that to print "Derived", but it prints "Base" instead. > How can I get > it to do what I want? > > Thank for the help. If you know the name of the extension class, you'd want to do this: <code> class Base { static function f() { Derived::g(); } static function g() { print("Base\n"); } } class Derived extends Base { static function g() { print("Derived\n"); } } Derived::f(); </code> If you don't know if, though, you could possibly call it as a variable. Perhaps something like this: <code> class Base { static function f($classname) { $classname::g(); } static function g() { print("Base\n"); } } class Derived extends Base { static function g() { print("Derived\n"); } } Derived::f('Derived'); </code> Not sure if this is what you're looking for, but if not let us know. -- Mike Johnson Smarter Living, Inc. Web Developer www.smartertravel.com mike@smarterliving.com (617) 886-5539

« previous php.general (#214560) next »