PHP継承可能単例モード
830 ワード
<?php
class Single {
protected static $instance = array();
protected final function __construct() {
$this->init();
}
protected final function __clone() {}
protected function init() {}
public final function getInstance() {
$className = get_called_class();
if (!isset($instance[$className])) {
static::$instance[$className] = new static();
}
return static::$instance[$className];
}
}
<?php
trait Single {
private static $instance;
private function __construct() {}
private function __clone() {}
public static function getInstance() {
if (self::$instance == null) {
self::$instance = new self();
}
return self::$instance;
}
}