PHP,扩展类的函数替换
想象一下,我有一节这样的课PHP,扩展类的函数替换,php,function,class,extend,Php,Function,Class,Extend,想象一下,我有一节这样的课 class MyClass { private function func1() { // Much code func2(); // Much code } private function func2() { echo 'old class'; } } 是否可以扩展该类并替换其中的函数func2(),以便在新类中,func1()将使用新的func2()。像这样: cl
class MyClass {
private function func1() {
// Much code
func2();
// Much code
}
private function func2() {
echo 'old class';
}
}
是否可以扩展该类并替换其中的函数func2(),以便在新类中,func1()将使用新的func2()。像这样:
class MyNewClass extends MyClass {
private function func2() {
echo 'new class';
}
}
但是我描述的方法仍然会为MyNewClass回显“旧类”,但是如何替换父函数?听起来您仍然希望从旧类运行func2,但在新类的func2中运行更多代码。为此,只需在新类函数中调用父类。像这样:
private function func2() {
echo 'new class';
parent::func2();
}
如注释所示,使用public或protected。可以找到这两个修饰符之间的差异
将其设置为
受保护的
而不是私有的
,然后在降序类中重写。将其设置为在新类中受保护的,在扩展类中启用?请查看PHP类中属性可见性的文档:MyClass
中的@user902100。
class MyClass {
public function func1() {
// Much code
func2();
// Much code
}
public function func2() {
echo 'old class';
}
}
class MyNewClass extends MyClass {
private function func2() {
echo 'new class';
}
}