2016-03-07 3 views
0

У меня есть строка переменнойнаписание имени функции в качестве значения строки переменной

$worker_name = "video_convert" 

Я хочу написать функцию с именем, похожим на следующий

function video_convert(){ 
} 

Как я могу сделать это в PHP? Я попытался

function eval($worker_name){ 
} 

или

eval($worker_name) = function(){ 
} 

Но, похоже, это не правильный способ сделать это в PHP.

+0

что вы пытаетесь сделать? Зачем звонить так, как вы хотите? –

+0

Вы хотите по существу рандомизировать имена своих функций? Это плохая идея. Зачем‽ – deceze

ответ

3

Вы можете сделать это, как

$worker_name = 'video_convert'; 
$$worker_name = function() { 
    echo 'hi'; 
}; 
$$worker_name(); 
1

Вы можете сделать несколько вроде как

$worker_name = "video_convert"; 

function video_convert(){ 
    echo "I've called a function using variable"; 
} 

$worker_name(); 
2

Вы можете использовать call_user_func:

$worker_name ="video_convert" 
function video_convert($text){ 
    echo "Hello $text\n"; 
} 

call_user_func($worker_name, 'World'); 

ИЛИ вы можете использовать, как вы пробовали :

$worker_name = 'video_convert'; 
function video_convert(){ 
    echo __METHOD__; 
} 
$worker_name(); 

ИЛИ как это:

$worker_name = function($text) 
{ 
    echo 'Anonymous function call '.$text 
}; 

$worker_name('Hello'); 

PHP является гибким.

1

Если вы хотите использовать функцию Eval(), а затем использовать его ниже образом: -

$worker_name = "video_convert()"; 

function video_convert(){ 
    echo "Called"; 
} 

eval("$worker_name;"); 
Смежные вопросы