我希望第一个示例代码产生与第二个相同的结果,但事实并非如此。所以为了得到正确的类名,我不得不重新定义msg()
扩展类中的自定义方法。
我想知道为什么第一个不产生扩展类名,以及为什么在重新定义完全相同的方法时它会产生。
示例 1
call_user_func(array(new MyClass_Mod, "msg"));
class MyClass {
function msg() {
echo '<p>get_class(): ' . get_class() . '</p>';
}
}
class MyClass_Mod extends MyClass {
}
输出
get_class(): 我的班级
示例 2
call_user_func(array(new MyClass_Mod, "msg"));
class MyClass {
function msg() {
echo '<p>get_class(): ' . get_class() . '</p>';
}
}
class MyClass_Mod extends MyClass {
function msg() {
echo '<p>get_class(): ' . get_class() . '</p>';
}
}
输出
get_class(): MyClass_Mod
我想知道机制,所以不建议使用get_called_class()
. 我无法将它用于 PHP 5.3 以下的版本。感谢您的输入。