RE: [PHP] calling a derived static method from a base class
| From: | Mike Johnson | 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