Вызовите функцию, не зная, что это имя

Я хочу создать функцию в PHP и вызвать ее, не зная имя функции.

Это возможно?

Пример:

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

Related of "Вызовите функцию, не зная, что это имя"

Похоже, вы хотите call_user_func() .

 $functionName = "someName"; call_user_func($functionName); //calls `someName()` 

Может использоваться следующим образом, где вывод представляет собой напечатанное сообщение «Hello, World!»:

 function someName($val){ return $val; } $functionName = "someName"; echo call_user_func($functionName, "Hello, World!"); 

http://ideone.com/Kw5jp

Примечание. Если вы используете более новые версии PHP, вы также можете использовать вызовы, как @ J.Bruni отметил:

 $functionName = "someName"; $functionName(); //also calls `someName()` 

Да, это просто:

 $functionName(); 

Тем не менее, у вас есть несколько других вариантов, позволяющих более сложные вещи. Пожалуйста, проверьте:

http://php.net/manual/en/language.types.callable.php

Примеры:

 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)); 

Важно: вам нужно объявить функцию перед ее вызовом. (В вашем вопросе вы объявляете функцию после попытки ее вызова. Это не работает.)

Чтобы избежать ошибок, вы можете использовать функцию is_callable для проверки возможности is_callable функции / метода до ее фактического вызова.

call_user_func () решает ваши проблемы!

 $function = 'myOwnFunction'; call_user_func( $functionname ); 

и чтобы избежать фатальных ошибок, вы

 function_exists($function); 

с этим!