Php 在不知道的情况下调用函数';姓名

Php 在不知道的情况下调用函数';姓名,php,Php,我想在PHP中创建一个函数,并在不知道函数名称的情况下调用它 这可能吗 例如: <?php $functionName = "someName"; $this->$functionName(); function someName(){ echo("Print Message"); } ?> 看起来像是你想要的 可以像下面这样使用,其中输出为打印消息“Hello,World!”: 注意:如果您使用的是较新版本的P

我想在PHP中创建一个函数,并在不知道函数名称的情况下调用它

这可能吗

例如:

<?php

     $functionName = "someName";
     $this->$functionName();
     function someName(){
         echo("Print Message");
     }
?>

看起来像是你想要的

可以像下面这样使用,其中输出为打印消息“Hello,World!”:

注意:如果您使用的是较新版本的PHP,也可以使用callables,正如@J.Bruni所指出的:

$functionName = "someName";
$functionName(); //also calls `someName()`
看起来你想要的

可以像下面这样使用,其中输出为打印消息“Hello,World!”:

注意:如果您使用的是较新版本的PHP,也可以使用callables,正如@J.Bruni所指出的:

$functionName = "someName";
$functionName(); //also calls `someName()`
调用用户函数()可以解决您的问题

$function = 'myOwnFunction';
call_user_func( $functionname );
为了避免致命的错误,您

function_exists($function);
用它

call\u user\u func()解决了您的问题

$function = 'myOwnFunction';
call_user_func( $functionname );
为了避免致命的错误,您

function_exists($function);
用它

是的,很简单:

$functionName();
然而,您还有其他几种选择,允许更复杂的内容。请检查:

示例集:

function test() { echo 'hello 1'; }
class Something { function test() { echo 'hello 2'; } }
class Other { static function test() { echo 'hello 3'; } }

$functionName = 'test';
$object = new Something();
$className = 'Other';

// three ways to call function "test", showing how to pass parameters
$functionName($param1, $param2);
call_user_func($functionName, $param1, $param2);
call_user_func_array($functionName, array($param1, $param2));

// two ways to call "Something::test"
$object->$functionName();
call_user_func(array($object, $functionName));

// a way to call "Other::test"
call_user_func(array($className, $functionName));
重要提示:在调用函数之前,需要声明函数。(在您的问题中,您是在尝试调用函数后声明函数。这不起作用。)

为了避免错误,您可以在实际调用某个函数/方法之前使用该函数验证该函数/方法是否可调用。

是的,很简单:

$functionName();
然而,您还有其他几种选择,允许更复杂的内容。请检查:

示例集:

function test() { echo 'hello 1'; }
class Something { function test() { echo 'hello 2'; } }
class Other { static function test() { echo 'hello 3'; } }

$functionName = 'test';
$object = new Something();
$className = 'Other';

// three ways to call function "test", showing how to pass parameters
$functionName($param1, $param2);
call_user_func($functionName, $param1, $param2);
call_user_func_array($functionName, array($param1, $param2));

// two ways to call "Something::test"
$object->$functionName();
call_user_func(array($object, $functionName));

// a way to call "Other::test"
call_user_func(array($className, $functionName));
重要提示:在调用函数之前,需要声明函数。(在您的问题中,您是在尝试调用函数后声明函数。这不起作用。)



为了避免错误,您可以在实际调用函数/方法之前使用该函数来验证函数/方法是否可调用。

而不知道函数名
而不知道函数名
?@nile和您的应答之间没有区别只有我和nile之间的区别,他似乎比我打字快^^^在@nile和你的答案之间没有区别,唯一的区别是我和nile之间的区别,他似乎比我打字快^^这是我认为最好的方式。对于这种情况,没有理由使用
call\u user\u func
,尽管您应该使用
函数\u exists
检查函数是否存在。是的,当然。您当然不需要
调用用户功能
。它在几种情况下都很有用,但是你当然可以使用字符串变量调用函数而不用它。我尝试了这两种方法,你的和@Nile这两种方法都很有用,谢谢这是最好的方法。对于这种情况,没有理由使用
call\u user\u func
,尽管您应该使用
函数\u exists
检查函数是否存在。是的,当然。您当然不需要
调用用户功能
。它在几种情况下都很有用,但是你当然可以使用字符串变量调用函数,而不必使用它。我尝试了两种方法,两种方法都有效,你的和@Nile,非常有用,thanksI尝试了两种方法,两种方法都有效,非常有用,谢谢使用帖子旁边的勾选框来选择答案“callables”这不是什么新鲜事。它们可以使用很长时间<代码>是可调用的函数从PHP4.0.6开始就可用。事实上,新的“callables”文档页面比以前更糟糕。。。在我的答案中粘贴了链接之后,我有了一个不愉快的惊喜。。。我想链接的页面已经不存在了!唯一新的是,你可以使用“callable”这个词作为类型提示:我尝试了这两种方法,两种方法都很有效,非常有用,谢谢你在帖子旁边用勾选框来选择答案“callables”并不是什么新鲜事。它们可以使用很长时间<代码>是可调用的函数从PHP4.0.6开始就可用。事实上,新的“callables”文档页面比以前更糟糕。。。在我的答案中粘贴了链接之后,我有了一个不愉快的惊喜。。。我想链接的页面已经不存在了!唯一新的是,您可以使用“callable”字作为类型提示: