【问题标题】:php class extender and parent's construnctorphp 类扩展和父类的构造函数
【发布时间】:2011-07-28 16:29:20
【问题描述】:

我有课

班级家长{ 函数 __construct(){ 全局 $var; } }

和另一个班级

类子扩展父{ 函数构造(){ 父:: __construct; } 函数打印(){ 回声 $var; } } $a = 新孩子; $a->打印();

有没有什么方法可以在不调用global $var; 内部print() 的情况下使$var 可用于print() 方法?

谢谢!

【问题讨论】:

    标签: php class constructor


    【解决方案1】:

    不,这是不可能的,因为它只是一个全局变量,因此在父类或继承类中没有任何特殊状态。

    但是,您可以:

    1. 将父类中的实例(即:类级别)变量设置为与全局变量相同的值。然后,您将在子类的 print 方法中使用继承的变量。

    2. 将全局变量作为参数传递给构造函数。但是,您需要同时修改子(将变量传递给父)和父构造函数。

    【讨论】:

      【解决方案2】:

      如果您将 $var 定义为成员变量,这是可行的。

      class parent {
        public $var;
        function __construct(){
          global $var;
          $this->var = $var;
        }
      }
      
      class child extends parent {
        function construct(){
          parent :: __construct;
        }
        function print(){
          echo $this->var;
        }
      }
      
      $a = new child;
      $a->print();
      

      【讨论】:

      • 您的代码错误。 (您需要在 print 方法中使用echo $this->var;。):-)
      猜你喜欢
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2013-11-15
      • 2019-01-07
      • 2021-02-13
      • 2014-05-29
      相关资源
      最近更新 更多