Stut wrote:
Hi all,
I'm wanting to define a static method on a base class that then
instantiates and returns an object of the type the static method was
called on. I've searched the docs and Googled but everything I find says
it's not possible and I just wanna check to make sure before I admit
defeat.
Say I have the following...
class Foo
{
public static function & Create()
{
$classname = ???;
return new $classname;
}
}
class Bar extends Foo { }
$obj = Bar::Create();
What do I put where the ???s are? I've tried __CLASS__ and get_class()
but both give me the base class name. Short of passing the classname to
the static function I'm at a loss as to how to do this. However,
Bar::Create('Bar') is a bit too sucky for me to be happy with it and
kinda defeats the object.
(purpose not object ;-)
either suck on it or use another language :-P.
this _PROBLEM_ exists since day 1 of php5 - there is no decent solution.
there has been discussion of this problem on the internals mailing list,
most of them seem to agree something is required here but no definite
fix has been implemented.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php