PHP5でデザインパターン・Singleton(シングルトン)編
結構よく使うSingleton。インスタンスが1個であることを保証出来る。
php4で、Singleton中途半端に実装して、newもgetInstanceも誤って使うと訳がわからなくなります。
以下ソースコード。
-
< ?php
-
class Singleton {
-
private $_name;
-
private function __construct() {
-
print "create instance<br />";
-
}
-
Singleton::$singleton = new Singleton();
-
}
-
return Singleton::$singleton;
-
}
-
public function setName($name) {
-
$this->_name = $name;
-
}
-
public function getName() {
-
return $this->_name;
-
}
-
}
-
-
print ‘Singleton.php test start.<br />’;
-
-
$object1 = Singleton::getInstance();
-
$object2 = Singleton::getInstance();
-
-
$object1->setName(‘akira’);
-
$object2->setName(‘yoshiko’);
-
-
$object3 = new Singleton();
-
-
echo ‘Singleton.php test end.<br />’;
-
?>
これで、$objcet1も$object2も同じインスタンスです。
$object3は生成出来ません。
で、以下結果。
———–
Singleton.php test start
create instance
akira
akira
yoshiko
yoshiko
Fatal error: Call to private Singleton::__construct() from context ” in /var/www/public_html/exsample/Singleton.php on line 34
———–
34行目でprivateになってるコンストラクタを呼び出そうとしているので、エラー(Fatal error)が発生しています。
そのため、「Singleton.php test end.」までは進みません。
今さらなネタですが、とりあえず。







