如何从父抽象类访问类属性到静态方法?

时间:2014-06-04 18:38:22

标签: php oop

这是一个简单的例子。

abstract class A{
  protected $foo = 'I m foo'; 
}

class B extends A{
  static function sayFoo(){
     // get the value of $foo here. 
  }
}

我可以将foo作为常量传递,或者将函数从static更改为normal,或者在父类中声明sayFoo但我想先检查是否有另一种方法而不使用Reflection

1 个答案:

答案 0 :(得分:1)

您无法静态访问protected $foo属性,因为它未声明为静态。但是你可以,如果它是一个对象。解决这个问题的一种方法是在静态函数中实例化类。

<?php

abstract class A{
  protected $foo = 'I m foo'; 
}

class B extends A{
  static function sayFoo(){
     // get the value of $foo here. 
      $bar = new self();
      echo $bar->foo;
  }
}   

B::sayFoo(); //prints 'I m foo';

?>