Re: Singleton with variable parameters

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

 



On Wed, Dec 15, 2010 at 2:11 PM, Sebastian Detert <php-maillist@xxxxxxxxx>wrote:

> Hi guys,
>
> I am trying to generate an abstract Singleton class for use in arbitrary
> classes, like
>
> class Foo extends Singleton {}
>
> and generate a new class with Foo -> getInstance();
>

Until traits release I think you'll find this painful as any class that
extends Singleton must now have extra functionality imbued via interfaces
and composition.

You will probly prefer to use a registry, something like
Registry::getInstance('classname', array('parameters'));

Even if you go with an abstract base class you will want an array of
instances internally.

How can I manage to use this with an unkown number of parameters like Foo ->
> getInstance('a', 'b'); ?
>

yes, func_get_args() & call_user_func_array() however, fyi, these are very
slow.


> Something like "self::$instance = call_user_func (array(static ,
> "__construct"), func_get_args());" instead of "self::$instance = new self;"
> doesn't work and an eval() is too slow.
>

if performance is a concern why not use setters to establish state on all of
your classes and keep the getInstance method down to 0 params.  As long as
your singletons aren't immutable this should work just fine.

-nathan

[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