Метод анонимного класса - КАК?

Тема в разделе "PHP", создана пользователем dr0id, 9 сен 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dr0id

    dr0id Создатель

    Регистр.:
    14 апр 2008
    Сообщения:
    42
    Симпатии:
    3
    Код, вида:

    Код:
    <?php
    $function_name = 'myfunc';
    function myfunc()
    {
        return 'hello, world';
    }
    echo $function_name();
    ?>
    Работает без проблем. Но если впихнуть функцию в класс (для того, чтобы спрятать ее внутрь пространства имен класса), вроде этого:

    Код:
    <?php
    class my_class
    {
        static function my_func()
        {
            return 'hello, world';
        }
    }
    $class_name = 'my_class';
    $function_name = 'my_func';
    echo $class_name::$function_name();
    ?>
    То, такая конструкция не работает. Подскажите, пожалуйста, как можно побороть это? Нужен доступ к статическому методу класса. При этом имя класса нужно задать при помощи переменной. Заранее огромное спасибо.

    Добавлено позже:

    Немного стыдно признаться, нашел решение при помощи вызова функции "call_user_func(array($my_class, $my_func))". Все оказалось так просто... Но теперь возник следующий вопрос:

    Как проверить, описана ли функция $my_func в классе или нет? Дело в том, что функция method_exists() требует указания идентификатора объекта, а не имя класса. Есть ли способ проверить наличие метода класса без создания экземпляра этого класса?
     
  2. gregzem

    gregzem

    Регистр.:
    21 окт 2007
    Сообщения:
    201
    Симпатии:
    66
    Если указать первым аргументом строковое имя класса?

    PHP:
    <?php
    if (is_callable(array('theclassname','themethod')))
        echo 
    'ok';
    ?> 
     
Статус темы:
Закрыта.