У меня есть такая структура:
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 {}
}
}
Это было бы потому, что вы используете $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); }
}
Других решений пока нет …