PHP Singleton 101
In software engineering, the singleton pattern is a design pattern used to implement only one instantiation of a class to one object. This pattern might not be used often, but it might be very helpful in database classes for example. We do not need to connect to a database every time a script is called if we use a persistent connection.
The singleton concept is simple: A class that can be instantiated only once. To achieve this, we cannot declare the constructor as public, but as private. Now, since a private method cannot be call from outside the class, we need to create a static public method that as access to the constructor.
The concept is not that hard to understand and neither to implement. Here's a sample code:
class SingleTon { private static $instance = NULL; private function __construct() { // use my mysql_pconnect() } public function __destruct() { // have some useful stuff here } public static function getInstance() { if(!is_object(self::$instance)) { self::$instance = new SingleTon(); } return self::$instance; } }
As you can see, the constructor is declared private. Therefore, you cannot to something like that:
$SingleTon = new SingleTon();
You will get something like:
Fatal error: Call to private SingleTon::__construct() from invalid context in /home/eric/test.php on line xx
In order to make it work, you simply need to do it like that:
$SingleTon = SingleTon::getInstance();