Intereting Posts
как динамически добавлять роли пользователей при входе в систему с помощью symfony2 (и fosUserBundle)? Преобразование массива PHP в переменные класса Сохранение нескольких файлов изображений с помощью Kartik FileInput Widget Поиск виртуальной машины с Xdebug, работающей для PHP в Netbeans Исправлен отбор HTML и PHP с помощью Vim Yii2: проверка в форме с двумя экземплярами одной модели Создание страницы ошибки для субдомена, который не существует Самый эффективный способ вызова конечной точки PHP с помощью jQuery ActiveRecord where_in () с массивом Я делаю это неправильно, или есть ошибка в библиотеке проверки формы CodeIgniter при использовании массивов в качестве имен полей? PHP-массив для jsTree Как добавить поддержку MySQL для PHP с помощью MacPorts? Как написать триггер, который сбрасывает значение поля через 30 дней? MySQL: «ошибка в синтаксисе SQL … рядом с ключом …»? PHP DOMDocument :: save () сохраняет как ASCII вместо UTF-8

PHP Вызов неопределенной функции

Я пытаюсь вызвать функцию из другой функции. Я получаю сообщение об ошибке:

Fatal error: Call to undefined function getInitialInformation() in controller.php on line 24 

Файл controller.php:

 require_once("model/model.php"); function intake() { $info = getInitialInformation($id); //line 24 } 

модель / model.php

 function getInitialInformation($id) { return $GLOBALS['em']->find('InitialInformation', $id); } 

Вещи уже пробовали:

  1. Убедитесь, что require_once работает, и файл существует в указанном месте.
  2. Убедитесь, что функция существует в файле.

Я не могу это понять. Я что-то упустил?

Как воспроизвести ошибку и как ее исправить:

  1. Поместите этот код в файл с именем p.php :

     <?php class yoyo{ function salt(){ } function pepper(){ salt(); } } $y = new yoyo(); $y->pepper(); ?> 
  2. Выполните его следующим образом:

     php p.php 
  3. Мы получаем ошибку:

     PHP Fatal error: Call to undefined function salt() in /home/el/foo/p.php on line 6 
  4. Решение: используйте $this->salt(); вместо salt();

    Так сделайте так:

     <?php class yoyo{ function salt(){ } function pepper(){ $this->salt(); } } $y = new yoyo(); $y->pepper(); ?> 

Если кто-то может опубликовать ссылку на почему $, это должно быть использовано до того, как PHP будет функционировать внутри классов, да, это было бы здорово.

Это была ошибка разработчика – неуместная конечная скобка, которая сделала указанную функцию вложенной функцией .

Я вижу много вопросов, связанных с неопределенной ошибкой функции в SO. Позвольте мне отметить это как ответ, если у кого-то другая проблема с объемом функции .

Сначала я попытался устранить неполадки:

  1. Искал файл php с определением функции в нем. Убедитесь, что файл существует.
  2. Убедитесь, что в этой статье существует запрос (или include ) для указанного файла. Кроме того, проверяется, что абсолютный путь в требовании / включении является правильным.
  3. Убедитесь, что имя файла написано правильно в инструкции require.
  4. Повторялось слово во включенном файле, чтобы увидеть, правильно ли оно включено.
  5. Определили отдельную функцию в конце файла и вызвали ее. Он тоже работал.

Трудно было отслеживать фигурные скобки, поскольку функции были очень длинными – проблема с устаревшими системами. Дальнейшие действия по устранению неполадок были следующими:

  1. Я уже определил простую функцию печати в конце включенного файла. Я переместил его чуть выше «неопределенной функции». Это тоже не определило.
  2. Определили это как проблему с некоторыми областями.

  3. Используется функция краха Netbeans (сбрасывание кода), чтобы проверить функцию чуть выше этой. Таким образом, функция 1000 строк выше просто рухнула вместе с этим, что делает ее вложенной функцией.

  4. Как только проблема выявлена, вырезали функцию до конца файла, что решило проблему.

Вероятно, ваша функция находится в другом пространстве имен, чем тот, из которого вы его вызываете.

http://php.net/manual/en/language.namespaces.basics.php

Много раз проблема возникает из-за того, что php не поддерживает короткие открытые теги в файле php.ini , то есть:

 <? phpinfo(); ?> 

Вы должны использовать:

 <?php phpinfo(); ?> 

Неудачная конечная скобка, которая сделала вышеприведенную функцию вложенной функцией.

Я столкнулся с этой проблемой на виртуальном сервере, когда все правильно работало на другом хостинге. После нескольких модификаций я понял, что я include или require_one работает во всех вызовах, кроме как в файле. Проблема этого файла была в коде < ?php ? > < ?php ? > В начале и конце текста. Это был скрипт, который был только < ? , и в той версии apache, которая была запущена, не работало

В настоящее время я работаю над веб-службами, где моя функция определена, и она бросает ошибку с неопределенной функцией. Я просто добавил это в autoload.php в codeigniter

$ autoload ['helper'] = array ('common', 'security', 'url');

Общее имя моего контроллера.