当前位置: 首页 > 面试题库 >

PHP访问父类变量

何承
2023-03-14
问题内容
class A {
    private $aa;
    protected $bb = 'parent bb';

    function __construct($arg) {
       //do something..
    }

    private function parentmethod($arg2) {
       //do something..
    }
}

class B extends A {
    function __construct($arg) {
        parent::__construct($arg);
    }
    function childfunction() {
        echo parent::$bb; //Fatal error: Undefined class constant 'bb' 
    }
}

$test = new B($some);
$test->childfunction();

问题:如何在子项中显示父变量?预期结果将回显“父母bb”


问题答案:
echo $this->bb;

该变量是继承的并且不是私有的,因此它是当前对象的一部分。

以下是其他信息,可应您的要求提供有关使用的更多信息parent::

parent::当您要向父类的方法 添加其他 功能时使用。例如,想象一个Airplane类:

class Airplane {
    private $pilot;

    public function __construct( $pilot ) {
        $this->pilot = $pilot;
    }
}

现在,假设我们要创建一种同时具有导航器的新型飞机。您可以扩展__construct()方法以添加新功能,但仍可以使用父级提供的功能:

class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}

这样,您可以遵循DRY开发原则,但仍然可以提供所需的所有功能。



 类似资料:
  • 问题内容: 得知子类的类变量无法访问父类的类变量而没有特别指出父类的名称,我感到很惊讶: 为什么在定义By时我必须引用Ax,而不仅仅是x?这与我对实例变量的直觉是相反的,并且因为在定义B之后我可以引用Bx。 问题答案: 在Python中,在创建类之前,将在其自己的名称空间中执行类的主体(此后,该名称空间的成员将成为该类的成员)。因此,当解释器达到y = x + 1时,此时B类尚不存在,因此没有父类

  • 我有以下情况: 在执行代码时,输出为:5。 如何通过父类方法访问子类(B)变量(x)? 这是否可以在不重写print()方法的情况下完成(即在B中取消注释)? [这很重要,因为在重写时,我们将不得不再次重写print()方法的整个代码] 编辑过 进一步澄清:- 问题的动机是使用父类方法中的子类私有变量的值。这不需要更改父类私有变量的值来获得所需的结果 (感谢大家的时间和帮助)

  • 问题内容: 我需要使用 PHP* 访问 JavaScript 变量。这是我当前正在尝试的代码的简化版本,无法正常工作: * 我对JavaScript和PHP都是全新的,因此,我非常感谢任何建议。 更新 :好的,我想我简化了太多。我正在尝试创建一个表单,该表单在提交时将更新Twitter状态。我的表格工作正常,但我还想添加地理位置数据。由于我使用Javascript(特别是Google Geoloc

  • 问题内容: 假设我们有一个包含私有实例变量的类。 现在,让我们有另一个类,其中。如果在中没有定义访问器方法,可以在访问变量中使用非静态方法吗? 顺便说一下,我在用Java工作。 问题答案: 不,不符合Java语言规范,第3版: 6.6.8示例:私有字段,方法和构造函数 私有类成员或构造函数只能在包含该成员或构造函数声明的顶级类(第7.6节)的主体内访问。它不是子类继承的。 但是不管这种语言限制如何

  • 我试图在其他类中调用一个类的静态函数,但在kotlin中我不能创建一个静态函数,我必须创建一个伴生对象,在其中我必须定义我的函数,但在这样做的时候我不能访问父类变量,有什么方法可以在kotlin中实现这一点。 我想访问有趣的returnString()类的静态函数,就像我们在java中做的一样,如果有谁已经实现了这一点,请帮助。

  • 问题内容: 我有这个课: 有什么方法可以使用自变量访问静态变量?我宁愿这样做,因为长名称不可读。 问题答案: 使用。这对新旧样式类均适用。