Re: singleton in php?
- Date: Wed, 5 Sep 2018 08:56:24 +0100
- From: Pete Ford <pete@xxxxxxxxxxxxx>
- Subject: Re: singleton in php?
On 02/09/18 21:15, Jeffry Killen wrote:
I have been trying to get a better understanding of "singleton".
It is defined as a class that can only produce one instance of
In the online explanation, that is accomplished by a
private constructor function that produces an instance
of the class within its instance.
But in php I am of the understanding that a constructor
function has to be made public and can't return anything.
Here is the online reference I am looking at:
So, at some point it seems that the class instance has to
be exported via a return statement at some point, otherwise
how would it be used in other code?
Is there a part of the manual that addresses this?
I have a hard copy text* on PHP that addresses the singleton
and factory pattern, but I have not been able to completely
comprehend either of these.
*I don't have immediate access to the book and don't remember
the title, but the publisher is Friends of Ed / (Apress).
I have been further thrown off by the use of singleton
and this use of the term has me confused.
More than one object literal can be created and subsequently
cloned by code, so how is it a singleton, in the general sense?
Thank you for time and attention.
Not sure where you got the "constructor function has to be made public" from:
constructors can be private or protected in PHP just like most other OO
languages. You then hold a static instance of the singleton class, and access it
or create it with a static method.
So your basic code is something like:
private static $MY_INSTANCE = NULL;
private function __construct($params)
/* Do stuff */
public static function getInstance($params)
self::$MY_INSTANCE = new MySingleton($params);
I think that should work - anyone else got any corrections?