dr0id
Создатель
- Регистрация
- 14 Апр 2008
- Сообщения
- 42
- Реакции
- 3
- Автор темы
- #1
Код, вида:
Работает без проблем. Но если впихнуть функцию в класс (для того, чтобы спрятать ее внутрь пространства имен класса), вроде этого:
То, такая конструкция не работает. Подскажите, пожалуйста, как можно побороть это? Нужен доступ к статическому методу класса. При этом имя класса нужно задать при помощи переменной. Заранее огромное спасибо.
Добавлено позже:
Немного стыдно признаться, нашел решение при помощи вызова функции "call_user_func(array($my_class, $my_func))". Все оказалось так просто... Но теперь возник следующий вопрос:
Как проверить, описана ли функция $my_func в классе или нет? Дело в том, что функция method_exists() требует указания идентификатора объекта, а не имя класса. Есть ли способ проверить наличие метода класса без создания экземпляра этого класса?
Код:
<?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() требует указания идентификатора объекта, а не имя класса. Есть ли способ проверить наличие метода класса без создания экземпляра этого класса?