[英]how to use get_class() with scope resolution operator in PHP?
[英]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.