Skip to content

Commit

Permalink
Merge pull request #273 from simonrjones/fix/global-functions
Browse files Browse the repository at this point in the history
Removing \ from global functions
  • Loading branch information
Phil Sturgeon committed Jun 3, 2013
2 parents 67ae0f8 + 4d2fcc8 commit 17c761d
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions pages/Design-Patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class Singleton
{
static $instance = null;
if (null === $instance) {
$instance = new static;
$instance = new static();
}
return $instance;
Expand Down Expand Up @@ -122,20 +122,20 @@ class SingletonChild extends Singleton
}
$obj = Singleton::getInstance();
\var_dump($obj === Singleton::getInstance()); // bool(true)
var_dump($obj === Singleton::getInstance()); // bool(true)
$anotherObj = SingletonChild::getInstance();
\var_dump($anotherObj === Singleton::getInstance()); // bool(false)
var_dump($anotherObj === Singleton::getInstance()); // bool(false)
\var_dump($anotherObj === SingletonChild::getInstance()); // bool(true)
var_dump($anotherObj === SingletonChild::getInstance()); // bool(true)
{% endhighlight %}
The code above implements the singleton pattern using a [*static* variable](http://php.net/language.variables.scope#language.variables.scope.static) and the static creation method `getInstance()`.
Note the following:
* The constructor [`__construct`](http://php.net/language.oop5.decon#object.construct) is declared as protected to prevent creating a new instance outside of the class via the `new` operator.
* The magic method [`__clone`](http://php.net/language.oop5.cloning#object.clone) is declared as private to prevent cloning of an instance of the class via the [`clone`](http://php.net/language.oop5.cloning) operator.
* The magic method [`__wakeup`](http://php.net/language.oop5.magic#object.wakeup) is declared as private to prevent unserializing of an instance of the class via the global function [`\unserialize()`](http://php.net/function.unserialize).
* The magic method [`__wakeup`](http://php.net/language.oop5.magic#object.wakeup) is declared as private to prevent unserializing of an instance of the class via the global function [`unserialize()`](http://php.net/function.unserialize).
* A new instance is created via [late static binding](http://php.net/language.oop5.late-static-bindings) in the static creation method `getInstance()` with the keyword `static`. This allows the subclassing of the class `Singleton` in the example.
The singleton pattern is useful when we need to make sure we only have a single instance of a class for the entire
Expand Down

0 comments on commit 17c761d

Please sign in to comment.