Я пытаюсь вызвать функцию из другой функции. Я получаю сообщение об ошибке:
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); }
Вещи уже пробовали:
Я не могу это понять. Я что-то упустил?
Поместите этот код в файл с именем p.php
:
<?php class yoyo{ function salt(){ } function pepper(){ salt(); } } $y = new yoyo(); $y->pepper(); ?>
Выполните его следующим образом:
php p.php
Мы получаем ошибку:
PHP Fatal error: Call to undefined function salt() in /home/el/foo/p.php on line 6
Решение: используйте $this->salt();
вместо salt();
Так сделайте так:
<?php class yoyo{ function salt(){ } function pepper(){ $this->salt(); } } $y = new yoyo(); $y->pepper(); ?>
Если кто-то может опубликовать ссылку на почему $, это должно быть использовано до того, как PHP будет функционировать внутри классов, да, это было бы здорово.
Это была ошибка разработчика – неуместная конечная скобка, которая сделала указанную функцию вложенной функцией .
Я вижу много вопросов, связанных с неопределенной ошибкой функции в SO. Позвольте мне отметить это как ответ, если у кого-то другая проблема с объемом функции .
Сначала я попытался устранить неполадки:
Трудно было отслеживать фигурные скобки, поскольку функции были очень длинными – проблема с устаревшими системами. Дальнейшие действия по устранению неполадок были следующими:
Определили это как проблему с некоторыми областями.
Используется функция краха Netbeans (сбрасывание кода), чтобы проверить функцию чуть выше этой. Таким образом, функция 1000 строк выше просто рухнула вместе с этим, что делает ее вложенной функцией.
Как только проблема выявлена, вырезали функцию до конца файла, что решило проблему.
Вероятно, ваша функция находится в другом пространстве имен, чем тот, из которого вы его вызываете.
Много раз проблема возникает из-за того, что php
не поддерживает короткие открытые теги в файле php.ini
, то есть:
<? phpinfo(); ?>
Вы должны использовать:
<?php phpinfo(); ?>
Неудачная конечная скобка, которая сделала вышеприведенную функцию вложенной функцией.
Я столкнулся с этой проблемой на виртуальном сервере, когда все правильно работало на другом хостинге. После нескольких модификаций я понял, что я include
или require_one
работает во всех вызовах, кроме как в файле. Проблема этого файла была в коде < ?php ? >
< ?php ? >
В начале и конце текста. Это был скрипт, который был только < ?
, и в той версии apache, которая была запущена, не работало
В настоящее время я работаю над веб-службами, где моя функция определена, и она бросает ошибку с неопределенной функцией. Я просто добавил это в autoload.php в codeigniter
$ autoload ['helper'] = array ('common', 'security', 'url');
Общее имя моего контроллера.