0

我有这样的结构:

main.php

包含一次func1.php

包含一次func2.php

这两个文件都include在里面main.php

当我function switchboard()func1.php内部调用 a 时,出现以下错误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.phpswitchboard() {}include除了ing func1.phpinside有没有办法解决这个问题func2.php


func2.php

 function decode($var) {

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

函数1.php

 $erm = new CLASS() {

   function switchboard($id, $var) {

     if() {}
     else {}
   }

 }
4

1 回答 1

2

那是因为您$erm在函数中使用decode(),但它不包含在函数的范围内(请记住,与 javascript 不同,php 函数不会继承其周围的范围)

您可以声明decode为匿名函数并利用在其中use进行注入$erm,或进行$erm解码参数。

  • 匿名函数

只需use$erm 以确保将其包含在 decode 的范围内:

$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); }   
}
于 2017-03-28T18:21:13.380 回答