Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP动态函数调用_Php - Fatal编程技术网

PHP动态函数调用

PHP动态函数调用,php,Php,我不太确定我该如何问这个问题,但我会尽量弄清楚: 我有document.php和doc2.php(例如) 在第一个例子中,我想把一个函数放在一个变量中,这样我就可以在第一个例子中说: $_SESSION['action'] = 'exampleFunction($params)'; 在第二份文件中,我想说: $params = 'test'; $_SESSION['action']; 然后,根据用户在上一文档中所做的操作,我可以启动正确的函数。您可以使用“可变函数” 或者

我不太确定我该如何问这个问题,但我会尽量弄清楚:

我有document.php和doc2.php(例如)

在第一个例子中,我想把一个函数放在一个变量中,这样我就可以在第一个例子中说:

   $_SESSION['action'] = 'exampleFunction($params)';
在第二份文件中,我想说:

   $params = 'test';
   $_SESSION['action']; 
然后,根据用户在上一文档中所做的操作,我可以启动正确的函数。

您可以使用“可变函数”


或者您可以使用
创建函数()


您可以使用eval功能:


但我强烈反对这样做,因为这是非常不安全的

这听起来更像是一个设计问题。我试着想象一种情况,你需要在会话中存储一个函数。你能详细说明一下你想做什么吗?听起来像是一个问题,有一个操作到函数的映射,或者
需要一个文件,或者…这真的取决于情况。同意,这听起来像是应该用其他方式做的事。听起来你可能想研究一下。这正是我需要的,非常感谢你,你为我节省了很多时间!我不知道,PHP太棒了eheh@Rafael在这种情况下,除了
eval
,还有许多更好、更安全的替代方法。@DC!,如果它是应授予的,则它是有效的解决方案。:-)我放弃投票是因为我个人厌倦了听“eval是不安全的/危险的,泄气的…”的故事,而没有任何有效的解释。Eval是对代码作为字符串的求值;这意味着,如果您在编写代码时根本没有接触eval,那么您也在使用eval,唯一的区别是当eval中的代码需要调试时缺乏舒适感。看在上帝的份上,调用require()或include()时会隐含eval()构造-因此,如果您是PHP程序员,那么您将定期使用eval()。
<?php
function foo() {
    echo "In foo()<br />\n";
}

$func = 'foo';
$func('arg1');
eval($_SESSION['action']);