PHP OOP how to access class parent property Scope Resolution Operator (::)?

时间:2015-06-20 09:37:40

标签: php properties

How can I access property var in class OtherClass from inside class like the method 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();

2 个答案:

答案 0 :(得分:3)

你不能,因为没有单独的变量。 OtherClass扩展MyClass因此OtherClass包含所有MyClass功能+来自OtherClass的其他内容,但仍然可以访问父级方法(通过parent::)非常有意义(即允许链接)然后拥有多个同名的变量会导致巨大的头痛而不会带来任何好处。

答案 1 :(得分:0)

为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,你可以在$this->getVar()中使用OtherClass。或者如果您这样做,可以在parent::getVar()内使用OtherClass