从不同的 include_once 文件调用函数时出错?
Get an error when calling a function from a different include_once file?
我有这样的结构:
main.php
include_once func1.php
include_once func2.php
这两个文件 include
在 main.php
中。
当我从 finc2.php
.
中的 func1.php
调用 function switchboard()
时,出现以下错误
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 行 是我在 func2.php
中从 func1.php
调用函数的地方 —
switchboard() {}
。除了在 func2.php
中 include
ing func1.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 {}
}
}
那是因为您在函数 decode()
中使用了 $erm
,但它并未包含在函数的范围内(请记住,与 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); }
}
我有这样的结构:
main.php
include_once
func1.php
include_once
func2.php
这两个文件 include
在 main.php
中。
当我从 finc2.php
.
func1.php
调用 function switchboard()
时,出现以下错误
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 行 是我在 func2.php
中从 func1.php
调用函数的地方 —
switchboard() {}
。除了在 func2.php
中 include
ing func1.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 {}
}
}
那是因为您在函数 decode()
中使用了 $erm
,但它并未包含在函数的范围内(请记住,与 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); }
}