反射实现的单例
四私一公
<?php namespace traits; trait Singleton { static private $instance; static public function getInstance() { if (is_null(static::$instance)) { $class = new \ReflectionClass(get_called_class()); static::$instance = $class->newInstanceWithoutConstructor(); $constructor = $class->getConstructor(); $constructor->setAccessible(true); $default = []; foreach ($constructor->getParameters() as $parameter) { $default[] = $parameter->getDefaultValue(); } $constructor->invokeArgs(static::$instance, array_replace_recursive($default, func_get_args())); } return static::$instance; } private function __construct() { } private function __clone() { } private function __wakeup() { } }
分情破爱始乱弃,流落天涯思别离。
如花似玉负情意,影如白昼暗自迷。
随风浮沉千叶落,行色匆匆鬓已稀。