PHP OOP继承问题。无法从子类访问父变量

时间:2011-04-05 16:34:47

标签: php oop inheritance

我有一个这样的课程:

class A {

 public $var = "";

 function __construct() {

  $this->var = "value";

 }

}

这样的儿童班:

class B extends A {

 function __construct() {

  // Is this correct?
  parent::__construct();

 }

 function my_function() {

  // Or this?
  // $options is an instantiation of A.
  global $options;

  echo $this->var;

 }

}

我遇到的问题是当我调用my_function()方法时,var的值为空。在php.net上阅读了一段时间后,我发现当一个子类有自己的构造函数时,父构造函数被覆盖,这就是我的变量为空的原因。我的问题是,如果我调用parent :: __ construct()的方式是正确的解决方案,或者我是否应该全局化我在脚本中创建的实例化对象?我在PHP.net和其他地方的评论中做了很多阅读,我找不到任何简洁的内容。

2 个答案:

答案 0 :(得分:1)

使用parent::method()调用重写方法(不仅是构造函数),因此您的解决方案是正确的。在您的情况下,您可以完全省略构造函数,并在声明属性时设置值。

class A {
  public $var = "value";
}

附加:全局变量在各个方面都很丑陋。只使用它们,如果你有真的这样做的理由而且永远不会,因为它更方便。

答案 1 :(得分:0)

以下“实施”......

$instanceOfB = new B();
$instanceOfB->my_function();

导致“价值”...正如所料。

您调用my_function()的方式是什么?