Here's a nice little trait(the new type of construct in PHP 5.4) to allow you to take a class and turn it into a singleton
Here we go:
1) Include the trait
2) Change the constructor to protected
.. and that's it. Happy days
Here we go:
1) Include the trait
2) Change the constructor to protected
.. and that's it. Happy days
Example
namespace test; class boosh { use \system\mixin\_Singleton; protected function __construct() { } } $mighty = boosh::getInstance();
The Singleton Source
namespace system\mixin; trait _Singleton { private static $obj; /** * @brief Using a singleton pattern to return a reference of the base class * @return a reference to a shared instance */ final public static function getInstance() { $lastClass = get_called_class(); if(false == isset(self::$obj)) { self::$obj = new static(); } return self::$obj; } }So what's the key? The secret is in static. Using "new static();" we are getting a reference to the class that the developer is invoking this against.
Not the class that the function is defined in. :D
Short and Sweet!
Short and Sweet!
No comments:
Post a Comment