PHP - 从另一个类访问一个函数

时间:2010-02-18 15:52:18

标签: php oop function

如何从功能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发送的请求的开关。根据请求,它调用一个函数将记录添加到数据库,编辑它等。

谢谢!

4 个答案:

答案 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