如何像方法一样从类内部访问类OtherClass
中的属性var
myFunc (parent::myFunc();)
<?php
class MyClass
{
public $var = 'A';
protected function myFunc()
{
echo "MyClass::myFunc()'n";
}
}
class OtherClass extends MyClass
{
public $var = 'B';
// Override parent's definition
public function myFunc()
{
// But still call the parent function
parent::myFunc();
echo "OtherClass::myFunc()'n";
}
}
$class = new OtherClass();
$class->myFunc();
你不能
,因为没有单独的变量。 OtherClass
扩展MyClass
因此OtherClass
包含所有MyClass功能+来自OtherClass
的其他内容,但是保持对父方法的访问(通过parent::
)非常有意义(即允许链接),然后拥有多个同名变量会引起巨大的头痛,而不会带来任何好处。
为 var 创建 getter 和 setter 方法。
class MyClass
{
private $var = 'A';
public function getVar()
{
return $this->var;
}
public function setVar($var)
{
$this->var = $var;
}
protected function myFunc()
{
echo "MyClass::myFunc()'n";
}
}
然后,如果您不覆盖那里的 getter 和 setter,则可以在 OtherClass
中使用 $this->getVar()
。或者,如果您这样做,则可以在OtherClass
中使用parent::getVar()
。