PHP - доступ к функции из другого класса - PullRequest
1 голос
/ 18 февраля 2010

Как я могу получить доступ к функции b из функции a?

Это то, что у меня есть, и я получаю эту ошибку: Неустранимая ошибка 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 ]

4 голосов
/ 18 февраля 2010

Вы должны определить абстрактный метод b в тесте базового класса (который делает этот класс абстрактным, поэтому вы не можете иметь его экземпляры), чтобы вызвать этот метод, в противном случае функция b не определена в этом классе, только в подкласс, о котором базовый класс ничего не знает (и не должен ничего знать).

Читайте о наследовании.

Другое дело: a и b не определены, используйте кавычки. (Но это может быть просто лень в вашем примере)

3 голосов
/ 18 февраля 2010

Вы не можете, $ test не является экземпляром класса test2, поэтому у него нет метода b. Если вместо этого вы вызываете $ test2-> a (b), это может сработать, если вы также определите b () в классе test. Таким образом, определение b в классе test2 переопределяет его.

1 голос
/ 18 февраля 2010

Если ваша функция может быть вызвана в статическом контексте, вы можете использовать

test2::b();

в противном случае вам нужно будет сделать

test2Obj = new test2();
test2Obj->b();

Ниже приведена соответствующая документация: http://us2.php.net/manual/en/language.oop5.paamayim-nekudotayim.php

1 голос
/ 18 февраля 2010

Вы не можете сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...