Как использовать call_user_func для статического метода класса? - PullRequest
7 голосов
/ 11 марта 2012

Следующий код работает нормально.

LibraryTests::TestGetServer();

Получить массив функций в LibraryTests и запустить их:

$methods = get_class_methods('LibraryTests');
foreach ($methods as $method) {
  call_user_func('LibraryTests::' . $method . '()' );
}

Это выдает ошибку: Warning: call_user_func(LibraryTests::TestGetServer()) [function.call-user-func]: First argument is expected to be a valid callback

Вот класс, который вызывается:

class LibraryTests extends TestUnit {

    function TestGetServer() {
        TestUnit::AssertEqual(GetServer(), "localhost/");
    }
    .
    .
    .

Как исправить?

Работа в PHP 5.2.8.

1 Ответ

13 голосов
/ 11 марта 2012

Либо (по состоянию на PHP 5.2.3):

$methods = get_class_methods('LibraryTests');
foreach ($methods as $method) {
  call_user_func('LibraryTests::' . $method);
}

Или (ранее):

$methods = get_class_methods('LibraryTests');
foreach ($methods as $method) {
  call_user_func(array('LibraryTests', $method));
}

См. call_user_func Документы и псевдотип обратного вызова Документы .

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