<p>How would one create a Singleton class using PHP5 classes?</p>

```
```
/**
 * Singleton class
 *
 */
final class UserFactory
{
    private static $inst = null;

    // Prevent cloning and de-serializing
    private function __clone(){}
    private function __wakeup(){}

    /**
     * Call this method to get singleton
     *
     * @return UserFactory
     */
    public static function Instance()
    {
        if ($inst === null) {
            $inst = new UserFactory();
        }
        return $inst;
    }
    
    /**
     * Private ctor so nobody else can instantiate it
     *
     */
    private function __construct()
    {
        
    }
}
```
```
To use:
```
```
$fact = UserFactory::Instance();
$fact2 = UserFactory::Instance();
```
```
```
$fact == $fact2;
```
But:
```
```
$fact = new UserFactory()
```
```
Throws an error.
See
http://php.net/manual/en/language.variables.scope.php#language.variables.scope.static
to understand static variable scopes and why setting
```
static $inst = null;
```
works.