2015-11-14 2 views
1

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

Fatal error: Call to undefined function()

  • номер строки, на которую ссылается указанная функция, - это строка, в которой:

    return get_session_user_id (session_id());

происходит на в функции ниже класса

Class Ref { 
    function treat_var($var , $table) { global $link; 
    // do stuff 
    return get_session_user_id(session_id()); 
    } 
} 

Функция treat_var представляет собой метод в классе и называется путем:

$ref = new Ref; 
$ref->treat_var($var,$table); 

get_session_user_id функция является глобальной функция, определенная в файле, включенном в файл функций, и работает просто отлично за пределами класса, а его код состоит из:

// this function calls a USER_ID *IF one exists* from a session by using the session ID 
function get_session_user_id($sessionID) { global $link; 
     $result = mysqli_query($link, "SELECT USER_ID AS ID from AAB_SESSIONS WHERE PHPSESSID = '$sessionID'"); 
     $r = mysqli_fetch_object($result); 
     return $r->ID; 
} 

Как я могу назвать эту функцию внутри класса?

+1

Пожалуйста, укажите больше кода. Эта часть кажется прекрасной. В какой строке находится код? – Andrius

+0

Все остальные функции кода правильно, если я возвращаю строку вместо значения, полученного из функции, она возвращает строку, и все довольно. Еще нужен код? – Jeff

+1

Нам нужно больше деталей. –

ответ

1

Убедитесь, что этот глобальный файл, где определена функция get_session_user_id(), загружается до загрузки класса Ref.

Другими словами загрузка классов должны идти таким образом:
1. Включить глобальный файл, который содержит осущ из get_session_user_id()
2. Класс нагрузки Ref

Чтобы проверить, что происходит добавить это внутри Ref.php перед тем определение класса

if (!function_exists('get_session_user_id')) { 
    die('GLOBAL FILE NOT LOADED and get_session_user_id() function not available!!!'); 
} 
+1

Спасибо Гандре, мне это нравится, потому что вместо того, чтобы «требовать_соединение» в нескольких файлах, я обращаюсь к первопричине проблемы, которая заключается в том, что функция не определена до определения класса. – Jeff

0

Если вы пытаетесь вызвать get_session_user_id(), и эта функция не определена, проверьте, какой файл с помощью этой функции не определено, то попробуйте написать

require_once "...filename with get_session_user_id() function..."; 

в начало файла с классом Ref.

Смежные вопросы