Получить ошибку при вызове функции из другого файла include_once?

У меня есть такая структура:

main.php

include_once func1.php

include_once func2.php

Эти два файла includeвнутри main.php,

Я получаю ошибку ниже, когда я звоню function switchboard() от func1.php внутри finc2.php,

Fatal error:  Uncaught Error: Call to a member function switchboard() on null in func2.php:16
Stack trace:
#0 main.php(60): decode_func('{"auth":"...)
#1 {main} thrown in func2.php on line 16

Строка 16 откуда я вызываю функцию func1.php внутри func2.php
switchboard() {}, Есть ли способ исправить это, кроме includeИНГ func1.php внутри func2.php?


func2.php

 function decode($var) {

if() {return $var;}
else { $erm->switchboard('101', $var); }
}

func1.php

 $erm = new CLASS() {

function switchboard($id, $var) {

if() {}
else {}
}

}

0

Решение

Это было бы потому, что вы используете $erm в функции decode(), однако он не включен в область действия функции (давайте иметь в виду, что в отличие от javascript, функции php не наследуют окружающую их область)

Вы можете объявить decode в качестве анонимной функции и воспользоваться use вводить $erm внутри или сделать $erm аргумент декодирования.

  • Анонимная функция

Просто use $ erm, чтобы убедиться, что он включен в область декодирования:

$decode = function ($var) use ($erm) {
if() { return $var; }
else { $erm->switchboard('101', $var); }
};
  • параметр

Проходить $erm как и любой другой параметр.

function decode ($var, $erm) {
if(false) { return $var; }
else { $erm->switchboard('101', $var); }
}
2

Другие решения

Других решений пока нет …