调用本身调用方法的父方法?

时间:2019-01-20 04:18:55

标签: php oop

我在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
    }
}

我感觉这可能是错误的操作方式,因为它不起作用,因此任何帮助都将是很好的。

2 个答案:

答案 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();
    }
}

?>