我正在尝试使用eval()动态创建函数。但我收到此警告:注意:使用未定义常量有什么建议吗?$funcs=array('func_a','func_b','func_c');foreach($funcsas$func_name){eval('function'.$func_name.'(){mainfunc('.$func_name.');}');}func_a();func_b();func_c();functionmainfunc($func_name){echo$func_name.'';}假设数组$func是一个存储在数据库中的选项值,我需要在脚本的单独部分中为回调函数提供函数名
这个问题在这里已经有了答案:PHPcall_user_funcvs.justcallingfunction(8个答案)关闭9年前。PHP只是一种脚本语言,所以我们可以简单高效地做很多事情。为什么不使用像“$callback($param)”这样简单易行的方法呢?
这个问题在这里已经有了答案:PHPcall_user_funcvs.justcallingfunction(8个答案)关闭4个月前。我不理解函数call_user_func(),因为我知道它是如何工作的,但我不确定为什么需要它或在什么情况下在php中使用它。就我而言,为什么不直接调用函数而不是用函数调用函数呢?谢谢!
PHP的func_get_args()文档提到:Thisfunctioncannowbeusedinparameterlists.谁能解释一下这意味着什么以及如何应用它? 最佳答案 在5.3之前,这是不可能的:functionfoo($a,$b){var_dump(func_get_args());}为了检索函数的参数(即出于调试目的),您必须在使用实际值之前将func_get_args返回值分配给变量:functionfoo($a,$b){$args=func_get_args();var_dump($args);}从PHP5.3
有什么区别:$callback=array(&$this,'method');$callback[0]->$callback[1]($args);和call_user_func(array(&$this,'method'),$args);? 最佳答案 不,调用变量方法/函数和使用call_user_func没有区别。我还没有遇到需要后者的情况。顺便说一句,您不需要通过引用传递$this;所有对象都自动通过引用传递。 关于php-方法上的call_user_func,我们在StackOve
如果我将一个闭包包裹在另一个闭包中,我将无法调用嵌套的闭包。为什么不?我认为一个例子最能说明问题。这段PHP代码:functionFInvoke($func){$func();}FInvoke(function(){echo"DirectInvokeWorked\n";});按预期工作并打印“DirectInvokeWorked”。但是,如果我稍微修改它以添加另一个间接级别,它就会失败:functionFInvoke($func){$func();}functionFIndirectInvoke($func){FInvoke(function(){$func();});}FIndire
functionfunc(){//...}我有函数名称"func",但没有它的定义。在JavaScript中,我只使用alert()来查看定义。PHP有类似的功能吗? 最佳答案 您可以使用ReflectionFunctionAbstract中定义的方法getFileName()、getStartLine()、getEndLine()从源文件(如果有的话)中读取函数/方法的源代码。例如(没有错误处理)getMethod($func[1]);}else{$rf=newReflectionFunction($func);}printf("
有没有一种方法可以在对象的上下文中执行PHP5.3中的闭包?classTest{public$name='John';functiongreet(){eval('echo"Hello,".$this->name;');call_user_func(function(){echo"Goodbye,".$this->name;});}}$c=newTest;$c->greet();eval()可以正常工作,但是call_user_func将无法访问$this。(不在对象上下文中时使用$this)。我现在将“$this”作为参数传递给闭包,但这并不是我所需要的。
我有主php文件和主类。我也在这门课上require_once("func.php");它对我的网站有很多有用的功能。func.php的体积很大,因为有很多不同页面的不同Action的函数。但是我把它包含在每一页上,因为包含由主类调用。我需要做什么来优化它?将func.php重写为OOP并在主类中使用类似“$funcs->my_func()”的东西?我会赢得一些表现吗?不调用的函数不会占用内存和CPU时间?或者我必须将func.php重写为多个文件并在指定页面上调用每个文件?例如:对于“about.php”,我将包含具有所需功能的“about_func.php”。但我觉得这不太舒服..
call_user_func()和它的语法糖版本之间有什么区别吗...//Globalfunction$a='max';echocall_user_func($a,1,2);//2echo$a(1,2);//2//ClassmethodclassA{publicfunctionb(){return__CLASS__;}staticfunctionc(){return'Iamstatic!';}}$a=newA;$b='b';echocall_user_func(array($a,$b));//Aecho$a->$b();//A//Staticclassmethod$c='c';echo