2013-10-03 2 views
2

Я пытаюсь проверить, доступно ли несколько функций php. Источник должен быть массивом с именами функций. К сожалению, это, похоже, не сработает. Я всегда получаю отрицательный доход:php проверить, доступна ли функция с массивом в качестве источника

// Array with function names 
$func_array = array("die", 
        "echo", "empty", "exit", "eval", 
        "include", "include_once", "isset", 
        "list", 
        "print", 
        "require", "require_once", 
        "unset","exec" 
        ); 

// Check Function 
function func_avail($funcav) { 
    if (function_exists($funcav)) { 
     echo "$funcav is enabled<br/>"; 
    } 
    else { 
     echo "$funcav is not enabled<br/>"; 
    } 

} 

// Loop through array 
for ($x = 0; $x < count ($func_array); $x++) 
{ 
     func_avail($func_array[$x]); 
} 

Вопрос 1: Почему это не работает? (Ouput всегда не включен)

Вопрос 2: Не включен (функция_exists = 0) означает, что функция была отключена в php.ini, или это также означает, что она недоступна в этой версии PHP. F.E. Я пытаюсь использовать функцию, доступную только с новой версией php.

С уважением, и спасибо!

Toni

+0

Не все из них являются функциями. Некоторые из них представляют собой синтаксические конструкции на уровне языка или псевдофункции. – mario

+0

Просто проверьте номер версии – Anthony

+0

Вот список языковых конструкций, которые вы могли бы принять за функции: http://php.net/manual/en/reserved.keywords.php – Anthony

ответ

0

Вопрос 1: Почему это не работает? Ouput всегда не включен

... за исключением exec(). Что правильно: ни один из других элементов не является функциями, они являются языковыми конструкциями. (Насколько я знаю, нет никакого способа, чтобы отключить языковую конструкцию.)

Страница руководства function_exists() подтверждает, что:

Эта функция возвращает FALSE для конструкций, таких как include_once и echo.

 

Вопрос 2: ли не включен (function_exists = 0) означает, что функция была отключена в php.ini или может это также означает, что она не доступны с этим PHP версия. F.E. Я пытаюсь использовать функцию , которая доступна только с новой версией php.

Это означает, что именно the manual says:

проверяет список определенных функций, как встроенные (внутренние) и определяемые пользователем, для ИМЯ_ФУНКЦИИ.

Примечание: Имя функции может существовать, даже если сама функция непригодна для использования из-за конфигурации или компиляции параметров (примером которых являются функции изображения).

+0

Привет Альваро, ладно, я думаю, что понимаю.function_exists проверяет только на реальные php-функции, поэтому все остальные функции laguage меня выводят, что она не включена. моя идея заключается в том, чтобы получить всю используемую функцию php в приложении с phpxref, а в случае сервера или лучше проверить обновление php, если все необходимое будет доступно. –

+0

Это ненадежно. Ваша программа может использовать аргумент функции, который был добавлен позже. –

+0

true ... Мне нужно снова подумать о решении проблем с версией php. Спасибо. –

Смежные вопросы