Константы или переменные класса в рубине?

Неустранимая ошибка: вызов неопределенной функции XXX

Случается, когда вы пытаетесь вызвать функцию, которая еще не определена. Общие причины включают отсутствующие расширения и включают в себя объявление условной функции, функцию в объявлении функции или простые опечатки.

Пример 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, найдите информацию о том, почему, поскольку это может быть уже не нужно.

В случае отсутствия включено, обязательно включите файл, объявляющий функцию перед вызовом функции.

В случае опечаток исправить опечатку.

Вопросы, относящиеся

48
задан Andrew Grimm 27 September 2011 в 23:38
поделиться

3 ответа

Главное состоит в том, что при помощи ПОСТОЯННОЙ нотации, Вы проясняете читателю. нижний регистр, замороженная строка производит впечатление, , мог бы быть устанавливаемым, вынуждая кого-то возвратиться и считать RDoc.

56
ответ дан Charlie Martin 26 November 2019 в 18:53
поделиться

Если это действительно постоянные величины, которые Вы определяете в исходном коде и не хотите изменяться во время выполнения кода тогда, я рекомендовал бы использовать постоянный.

, Если Вы планируете установить и/или изменить эти значения динамично во время выполнения тогда, используют переменную класса с методами get и методами set.

11
ответ дан Raimonds Simanovskis 26 November 2019 в 18:53
поделиться

В основном Вы могли поместить его как это: Если Вы хотите что-то, что это постоянно, используйте константу. Если Вы хотите что-то, что это является переменным, используйте переменную. Кажется, что Ваш список типов является константами, видя, что это - замороженный массив, таким образом, я сказал бы, что имеет смысл использовать константу в этом случае.

8
ответ дан August Lilleaas 26 November 2019 в 18:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: