在孩子中实例化对象;分配给父类变量

时间:2013-09-19 16:01:24

标签: php class oop

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

// 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实例)

2 个答案:

答案 0 :(得分: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
   }
}

答案 1 :(得分:1)

您不能使用$this在静态方法中引用对象,因此您必须稍微更改它。使object成为受保护的静态成员。

class A {
  protected static $object;

   private static function() {
       $object = self::$object;
       // use the new instance of $object
   }
}