RE: calling a derived static method from a base class

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: news [mailto:news@xxxxxxxxxxxxx] 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@xxxxxxxxxxxxxxxxx   (617) 886-5539

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux