Случается, когда вы пытаетесь вызвать функцию, которая еще не определена. Общие причины включают отсутствующие расширения и включают в себя объявление условной функции, функцию в объявлении функции или простые опечатки.
Пример 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, найдите информацию о том, почему, поскольку это может быть уже не нужно.
В случае отсутствия включено, обязательно включите файл, объявляющий функцию перед вызовом функции.
В случае опечаток исправить опечатку.
Вопросы, относящиеся
Это, еще кажется, полностью не интегрируется в Pydev.
, Как предложено в это сообщение ,
[это] потребовало бы изменения кода в pydev - гибкая опция будет добавлять предпочтения, чтобы позволить пользователю выбрать, к которым шаблонам он хочет соответствовать для создания гиперссылок (и высказывание, какая группа в соответствии является строкой и какой является файлом)...
Или, можно попробовать трудно кодированная игра с: org.python.pydev.debug.ui. PythonConsoleLineTracker (должно быть довольно легко схватить).
А запрос действительно существует для просто этого, но это, кажется, спустя все еще открытый 1 год после его создания...
Я не знаю, как интегрировать его для всего проекта, но я использовал его как внешний инструмент для анализа отдельного файла.
Обратите внимание, что пакет pycodestyle
является официальной заменой и более новой версией пакета pep8
. Чтобы установить его, запустите:
$ sudo pip install --upgrade pycodestyle
Затем в Eclipse:
пикодестиль
.Заполните следующие поля:
Местоположение - $ {system_path: pycodestyle}
Рабочий каталог - $ {container_loc}
Аргументы - - "$ {resource_name}"
(Используется текущий активный файл.)
Перейдите на вкладку Общие и убедитесь, что установлен флажок Allocate Console .
Преимущество этого подхода заключается в том, что вы можете использовать самую последнюю версию пакета, а не ограничиваться старой версией, включенной в PyDev. И если вам интересно настроить pylint
аналогичным образом, см. этот ответ .