我在OOP PHP中遇到一个奇怪的问题,我的孩子上的方法调用了在父级上设置自身属性的方法,这些方法似乎不起作用。
例如:
儿童班
class B extends A {
private function childMethod() {
// Some code
$this->parentClassMethod()
}
}
父类
class A {
protected function parentClassMethod() {
echo "Something here" // This will work
$this->_someVariable = 'someValue'; // This will not
}
}
我感觉这可能是错误的操作方式,因为它不起作用,因此任何帮助都将是很好的。
答案 0 :(得分:1)
您可以使用parent
而不是$this
来执行此操作,但是您不能从孩子的父母那里调用private
方法。
class A
{
public $someVariable = '';
public function parentClassMethod()
{
echo 'Something here';
$this->someVariable = 'Some Value';
}
}
class B extends A
{
private function childMethod()
{
parent::parentClassMethod();
}
}
答案 1 :(得分:-1)
您也可以将parentClassMethod()
声明为protected
而不是private
。请查看Visibility。
<?php
class A {
protected $_someVariable;
protected function parentClassMethod() {
echo "Something here";
$this->_someVariable = 'somSomething is wrongue';
echo $this->_someVariable;
}
}
class B extends A {
private function childMethod() {
// Some code
$this->parentClassMethod();
}
}
?>