如何更改父属性值

时间:2017-07-20 15:13:26

标签: php oop extends

我有一个父类Base

abstract class Base
 {
    protected $prop1 = null;

    protected $prop2 = null;
 }

在子类中,我想要更改属性

class Child extends Base
 {


    public function method1($val1, $val2)
    {
        $this->prop1 = $val1;
        $this->prop2 = $val2;
    }

    public function method2()
    {
        echo prop1;
        echo prop2;
    }

 }

在调用子类的第一个方法之后以及在调用子类的第二个方法之后,有没有办法获取更改的值?我尝试这样做但是我在这个例子中没有改变值,因为它是空的。

3 个答案:

答案 0 :(得分:1)

在子类method2中,您不是指实际属性。 使用$,否则php会将其理解为constant

<?php

     abstract class Base
     {
        protected $prop1 = null;

        protected $prop2 = null;
     }

     class Child extends Base
     {

        public function method1($val1, $val2)
        {
            $this->prop1 = $val1;
            $this->prop2 = $val2;
        }

        public function method2()
        {
            echo $this->prop1; 
            echo $this->prop2;
        }

     }

     $child = new Child();
     $child->method1(30, "ABC");
     $child->method2(); //will show 30ABC

    ?>

答案 1 :(得分:0)

使用$this->prop1阅读prop1属性:

class Child extends Base{

    public function method1 ($val1, $val2) {
        $this->prop1 = $val1;
        $this->prop2 = $val2;
    }

    public function method2 () {
        echo $this->prop1;
        echo $this->prop2;
    }

}

docs中了解PHP中的OOP。

答案 2 :(得分:0)

您必须将prop1和prop2作为类属性处理。因此 - 对象范围/上下文 - 你必须在代码中写入(每当你读/写它们的值时)就像你在method1()中所做的那样:

public function method2() {
    echo $this->prop1;
}