0

这样做的正确方法是什么:

// child
class B extends A {

   function __construct() {
        $this->object = new B; /// (or `new self` ?)
   }

}

// parent
class A {
   protected $object;

       private static function {
           $object = $this->object;
           // use the new instance of $object
       }
}

当我在代码中尝试此操作时,出现此错误:

Fatal error: Using $this when not in object context 我究竟做错了什么?(这是指类A实例)

4

2 回答 2

3

您不能$this在静态方法中使用;$this 只能在实例化对象中使用。

您必须将 $object 更改为静态并使用self::$object

class B extends A {

   function __construct() {
        self::$object = new B;
   }

}

// parent
class A {
   static protected $object;

   private static function doSomething(){
       $object = self::$object;
       // use the new instance of $object
   }
}
于 2013-09-19T16:04:38.697 回答
1

您不能使用$this在静态方法中引用对象,因此您必须对其进行一些更改。制作object一个受保护的静态成员。

class A {
  protected static $object;

   private static function() {
       $object = self::$object;
       // use the new instance of $object
   }
}
于 2013-09-19T16:08:08.093 回答