P. *_*ski 1 php oop class instance
我有一个小问题,我认为这是一个愚蠢的问题。我开始编写OOP编码,并且在Internet上看到很多具有以下代码段的类:
public static $istance;
public function __construct(){
//some code...
$this->instance = $this;
}
public function get_instance(){
return $this->instance;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:原因是什么?
这是单例的不良实现http://en.wikipedia.org/wiki/Singleton_pattern。
简短地说:Singleton是设计模式,它可以确保单线程应用程序将是具有全局访问点的类的唯一实例。
正确实现
class Singleton {
protected static $instance;
private function __construct(){ /* ... @return Singleton */ }
private function __clone() { /* ... @return Singleton */ }
private function __wakeup() { /* ... @return Singleton */ }
public static function getInstance() {
if ( !isset(self::$instance) ) {
self::$instance = new self();
}
return self::$instance;
}
public function doAction() { /* ... */ }
}
Run Code Online (Sandbox Code Playgroud)
通话实例
Singleton::getInstance()->doAction();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |