在静态子类php中调用非静态函数

在静态子类php中调用非静态函数,php,Php,我有一个扩展普通类的单例类。(1类) 普通类有两个非静态函数,分别称为set()和get()。(第2类) 第三个类(Class3)获取单例(Class1)实例,通过单例使用set()和get()。使用Class3可以很好地工作,但是有没有办法在父类的单例中使用get()方法来查看“第三个”类将其设置为什么 我似乎不能调用get,因为它是非静态的。请让我知道这是否令人困惑 class Class1 { public function doThings(){ $this-

我有一个扩展普通类的单例类。(1类)

普通类有两个非静态函数,分别称为set()和get()。(第2类)

第三个类(Class3)获取单例(Class1)实例,通过单例使用set()和get()。使用Class3可以很好地工作,但是有没有办法在父类的单例中使用get()方法来查看“第三个”类将其设置为什么

我似乎不能调用get,因为它是非静态的。请让我知道这是否令人困惑

class Class1 {
     public function doThings(){
         $this->view->set("css","1234");
     }
}

class Singleton extends Class3 {
      static public function instance()
      {
           if (!self::$_instance instanceof self) {
           self::$_instance = new self();
           }

          return self::$_instance;
      }
      //I want this singleton to call get("css") and have it return the value.

}


class Class3{
     public function get(arg){//implementation } 
     public function set(arg){//implementation }
}

我从来没有见过一个单例的特定类,它扩展了它应该是单例的类。相反,请尝试以下方法:

class Class3
{  
    private $_instance;

    static public function instance()
    {
        if (!self::$_instance instanceof self) {
            self::$_instance = new self();
        }

        return self::$_instance;
    }

    public function get(arg){//implementation } 
    public function set(arg){//implementation }
}

// Calling code
// I want this singleton to call get("css") and have it return the value.

Class3::getInstance()->set('css', 'border:0');
Class3::getInstance()->get('css');

我刚刚解决了我自己的问题,很抱歉回复晚了

在singleton中,我所要做的就是这样调用get():

self::instance()->get("css");

你让我们告诉你这是否令人困惑。这让人困惑。好吧,我发布了代码片段:)你需要普通类做什么?为什么要用单例模式扩展它?普通类是一个模板类,我想通过我的单例来扩展它以使用许多有用的函数。单例应该做什么?你能展示更多的代码吗?这很好,唯一的问题是,除了get和set之外,还有很多函数,我不能在单例中实现它们,因此扩展了。你没有“在单例中实现它们”,单例代表了class3的一个实例,这意味着它可以访问每个公共成员变量和函数,就像它扩展了class3一样。哦,等等,我收回我说过的话。我没有注意到您的解决方案是class3,而不是singleton。请小心,如果您选择对另一个类执行相同的操作,则会导致命名空间冲突。如果您想对class2执行相同的操作,该怎么办?现在将有两个名为Singleton的类,这将由于名称空间冲突而导致错误。我建议您使用我的解决方案,这样您以后就可以避免这个问题。谢谢,这很有意义。虽然它永远不会被用在这种方式没有担心,只是让你意识到未来可能的问题。祝你好运