繁体   English   中英

PHP OOP如何访问类父属性Scope Resolution Operator(::)?

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

如何从类内部访问类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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM