大佬教程收集整理的这篇文章主要介绍了PHP-辛格尔顿遗产,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这里说明了单例:
http://en.wikipedia.org/wiki/Singleton_pattern#PHP_5.
我想将单例类用作超类,并将其扩展到其他应该是单例的类中.问题是,超类是其自身的实例,而不是子类.知道如何让超类创建子类的实例吗?
class Singleton {
// object instance
private static $instance;
protected function __construct() { }
public function __clone() { }
public function __wakeup() { }
protected static function geTinstance() {
if (!self::$instance instanceof self) {
self::$instance = new self;
if(self::$instance instanceof Singleton)
echo "made Singleton object<br />";
if(self::$instance instanceof Text)
echo "made Test object<br />";
}
return self::$instance;
}
}
class Test extends Singleton {
private static $values=array();
protected function load(){
$this->values['a-value'] = "test";
}
public static function get($arg){
if(count(self::geTinstance()->values)===0)
self::geTinstance()->load();
if(isset(self::geTinstance()->values[$arg]))
return self::geTinstance()->values[$arg];
return false;
}
}
解决方法:
这是PHP的局限性-父类无法确定静态调用其方法的子类的名称.
PHP 5.3现在支持后期静态绑定,这可以让您做所需的事情,但是要广泛使用还需要一段时间.查看一些信息here
这里有几个类似的问题,对于可能的解决方法,可能值得阅读,例如this one
以上是大佬教程为你收集整理的PHP-辛格尔顿遗产全部内容,希望文章能够帮你解决PHP-辛格尔顿遗产所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。