Случается, когда вы пытаетесь вызвать функцию, которая еще не определена. Общие причины включают отсутствующие расширения и включают в себя объявление условной функции, функцию в объявлении функции или простые опечатки.
Пример 1 - Декларация условной функции
$someCondition = false;
if ($someCondition === true) {
function fn() {
return 1;
}
}
echo fn(); // triggers error
В этом случае fn()
никогда не будет объявлено, потому что $someCondition
не соответствует действительности.
Пример 2 - Функция в объявлении функции
function createFn()
{
function fn() {
return 1;
}
}
echo fn(); // triggers error
В этом случае fn
будет объявлен только после вызова createFn()
. Обратите внимание, что последующие вызовы createFn()
вызовут ошибку об обновлении существующей функции.
Вы также можете увидеть это для встроенной функции PHP. Попробуйте найти функцию в официальном руководстве и проверьте, к какому «расширению» (к нему принадлежит PHP-модуль), и какие версии PHP поддерживают его.
В случае отсутствующее расширение, установите это расширение и включите его в php.ini. Обратитесь к Инструкции по установке в Руководстве по PHP для расширения вашей функции. Возможно, вы также сможете включить или установить расширение с помощью диспетчера пакетов (например, apt
в Debian или Ubuntu, yum
в Red Hat или CentOS ) или панель управления в среде общедоступного хостинга.
Если функция была введена в более новой версии PHP из того, что вы используете, вы можете найти ссылки на альтернативные реализации в руководстве или в разделе комментариев , Если он был удален из PHP, найдите информацию о том, почему, поскольку это может быть уже не нужно.
В случае отсутствия включено, обязательно включите файл, объявляющий функцию перед вызовом функции.
В случае опечаток исправить опечатку.
Вопросы, относящиеся
Главное состоит в том, что при помощи ПОСТОЯННОЙ нотации, Вы проясняете читателю. нижний регистр, замороженная строка производит впечатление, , мог бы быть устанавливаемым, вынуждая кого-то возвратиться и считать RDoc.
Если это действительно постоянные величины, которые Вы определяете в исходном коде и не хотите изменяться во время выполнения кода тогда, я рекомендовал бы использовать постоянный.
, Если Вы планируете установить и/или изменить эти значения динамично во время выполнения тогда, используют переменную класса с методами get и методами set.
В основном Вы могли поместить его как это: Если Вы хотите что-то, что это постоянно, используйте константу. Если Вы хотите что-то, что это является переменным, используйте переменную. Кажется, что Ваш список типов является константами, видя, что это - замороженный массив, таким образом, я сказал бы, что имеет смысл использовать константу в этом случае.