- var_dump: documentation ( source)
<?php
class Singleton
{
private static $instance = null;
final private function __construct() {}
final private function __clone() {}
public function __wakeup()
{
throw new Exception("Cannot unserialize singleton");
}
public static function getInstance()
{
if (!self::$instance) {
self::$instance = new self;
}
return self::$instance;
}
}
$oneInstance = Singleton::getInstance();
echo "Cloneable outside:", var_dump((new ReflectionClass('Singleton'))->isCloneable());
$cloner = function () {
return clone $this;
};
$secondInstance = $cloner->bindTo($oneInstance, 'Singleton');//->__invoke();
// $thirdInstance = clone $oneInstance;
var_dump($secondInstance);
$reflection = new ReflectionClass($secondInstance);
var_dump($reflection->getMethods());
var_dump($reflection->getMethod('bind'));
var_dump($reflection->getMethod('bindTo'));