如何从功能a?
中访问功能b这是我到目前为止,我收到此错误:PHP致命错误:调用未定义的方法a :: b()
class test {
function a($x) {
switch($x)
{
case 'a'://Do something unrelated to class test2
break;
case 'b':
$this->b();
break;
}
}
}
class test2 extends test {
function b() {
echo 'This is what I need to access';
}
}
$example=new test();
$example2=new test2();
$example->a(b);
对于背景信息 - 函数a是通过AJAX发送的请求的开关。根据请求,它调用一个函数将记录添加到数据库,编辑它等。
谢谢!
答案 0 :(得分:4)
你必须在基类测试中定义一个抽象方法b(这使得这个类抽象,所以你不能拥有它的实例)来调用这个方法,否则函数b没有在这个类中定义,只是在它的基类不知道什么的子类(并且不应该知道任何东西)。
阅读继承。
另一件事:a和b未定义,请使用引号。 (但这可能只是你的例子中的懒惰)
答案 1 :(得分:3)
你不能,$ test不是test2类的实例,所以它没有方法b。如果你改为调用$ test2-> a(b),它就可以工作,只要你在类test中定义b()。这样,类test2中b的定义就会覆盖它。
答案 2 :(得分:1)
你不能这样做。
答案 3 :(得分:1)
如果可以在静态上下文中调用您的函数,则可以使用
test2::b();
否则你需要做一个
test2Obj = new test2();
test2Obj->b();
以下包含一些适当的文档:http://us2.php.net/manual/en/language.oop5.paamayim-nekudotayim.php