我有一个父类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;
}
}
在调用子类的第一个方法之后以及在调用子类的第二个方法之后,有没有办法获取更改的值?我尝试这样做但是我在这个例子中没有改变值,因为它是空的。
答案 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;
}