|
Posted by ZeldorBlat on 11/14/07 14:25
On Nov 13, 6:04 pm, Rob Wilkerson <r.d.wilker...@gmail.com> wrote:
> Hey all -
>
> Not being a seasoned PHP developer, tonight I started playing with the
> use of the Singleton pattern to store configuration information. What
> I was surprised to find was that the instance - at least the one I'm
> creating - isn't really a singleton. With each request, the
> constructor is called. Isn't that very much *not* a singleton or am I
> misunderstanding or doing something wrong? I'm using a pretty simple
> case:
>
> class Config
> {
> private static $instance;
>
> private function __construct() {
> echo '<p>Constructing</p>';
> }
>
> public static function getInstance()
> {
> if (!self::$instance)
> {
> self::$instance = new self();
> }
>
> return self::$instance;
> }
> public function clear() {
> echo '<p>clearing...</p>';
> self::$instance = null;
> }
>
> }
>
> What am I not doing or not understanding?
>
> Any insight would be greatly appreciated.
>
> Rob
That's expected. Remember that in PHP each request is independent of
the next. You'll only create one instance of your class /per request/
but it will be available everywhere you go.
Consider a database connection as an example. You open the connection
once per request, and you close it when the request is finished.
While the request is executing you only have/need a single connection
(i.e. you don't need to reconnect every time you execute a query) no
matter where in your code you go.
That's how singletons work in PHP.
Navigation:
[Reply to this message]
|