在PHP中访问父属性和重写方法

前端之家收集整理的这篇文章主要介绍了在PHP中访问父属性和重写方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下父母和子课程:
  1. abstract class ParentObj {
  2. private $data;
  3. public function __construct(){
  4. $this->data = array(1,2,3);
  5. var_dump($this->data);
  6.  
  7. $this->method();
  8. }
  9. public function method(){
  10. echo "ParentObj::method()";
  11. }
  12. }
  13. class ChildObj extends ParentObj {
  14. public function __construct(){
  15. parent::__construct();
  16. var_dump($this->data);
  17. }
  18. public function method(){
  19. echo "ChildObj::method()";
  20. }
  21. }

预期产量:

  1. array(1,3)
  2. ChildObj::method()
  3. array(1,3)

实际输出

  1. array(1,3)
  2. ParentObj::method()
  3. NULL

问题是,子对象无法访问数据属性,父对象拒绝调用子进程中的重写方法.

我做错了什么,或者有没有任何想法?

编辑:我应该澄清我将ChildObj实例化为$child = new ChildObj()

您已将数据声明为私有,因此ChildObj将无法访问它 – 您需要将其保护为:
  1. protected $data;

我的PHP(5.2.8)打印ChildObj :: method() – 你运行的是旧版本吗?

猜你在找的PHP相关文章