PHP   发布时间:2022-04-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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,请注明来意。
标签: