从不同的 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

这两个文件 includemain.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.phpincludeing 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); }   
}