Подтвердить что ты не робот

PHP Вызов функции undefined

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

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);
}

Вещи, которые уже пробовали:

  • Проверено, что require_once работает, и файл существует в указанном месте.
  • Проверено, что функция существует в файле.

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

<?
   phpinfo();
?>

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

<?php
   phpinfo();
?>

Ответ 5

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

Ответ 6

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

Ответ 7

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

$autoload ['helper'] = массив ('common', 'security', 'url');

common - это имя моего контроллера.