PHP父作用域解析运算符
我想知道应该如何解释以下代码(源代码:)PHP父作用域解析运算符,php,class,scope,operator-keyword,Php,Class,Scope,Operator Keyword,我想知道应该如何解释以下代码(源代码:) 类的对象OtherClass也是类的对象MyClass,因为类OtherClass扩展了类MyClass。它具有MyClass的所有属性和方法,但其中一些方法可能在OtherClass中重新定义 作用域解析运算符既用于访问静态类成员和方法(使用类名或),也用于访问父类中定义的方法(使用)。parent::myFunc()不是一个静态调用,但是它使用了相同的操作符,这有点令人困惑。仅当您已重写该方法并希望调用父方法时,才需要此运算符 将有一个OtherCl
类的对象OtherClass
也是类的对象MyClass
,因为类OtherClass
扩展了类MyClass
。它具有MyClass
的所有属性和方法,但其中一些方法可能在OtherClass
中重新定义
作用域解析运算符既用于访问静态类成员和方法(使用类名或),也用于访问父类中定义的方法(使用)。parent::myFunc()
不是一个静态调用,但是它使用了相同的操作符,这有点令人困惑。仅当您已重写该方法并希望调用父方法时,才需要此运算符
将有一个OtherClass的新实例(对象)。但同时会有父类的实例吗?我该怎么解释
因为OtherClass
扩展了MyClass
,所以您构建的单个对象同时是这两个类的实例 请参阅…双冒号是一个令牌,允许访问类的静态、常量和重写属性或方法。它被称为范围解析运算符,而不是“静态访问运算符”…它解析某些内容,与静态访问几乎没有关系。感谢您的回复,它使您的回复变得有意义。感谢您的回复
<?php
class MyClass
{
protected function myFunc() {
echo "MyClass::myFunc()\n";
}
}
class OtherClass extends MyClass
{
// Override parent's definition
public function myFunc()
{
// But still call the parent function
parent::myFunc();
echo "OtherClass::myFunc()\n";
}
}
$class = new OtherClass();
$class->myFunc();
?>