2012-02-13 52 views
-2

我試圖做這樣的事情:試圖建立一個函數的變量PHP

//function name 

$str = 'bla()'; 


//make function with string as name 
function $str{ 
     echo 'yey'; 
} 

//Call the function by string name 
bla(); 
+3

它已經沒有用了,真的。 – Griwes 2012-02-13 18:26:35

+0

你將需要的是http://www.php.net/manual/en/function.eval.php,但是如果你不需要的話不要使用它。 – 2012-02-13 18:28:55

+0

你爲什麼要做這樣愚蠢的事情? – Richard 2012-02-13 18:30:24

回答

4

你可以使用eval()嘗試此任務。但我真的建議吧:

// name of the function 
$str = 'bla'; 
// php code you want to execute inside 
$inside = ''; 
eval(" 
    function $str() { $inside } 
"); 

或者你也可以使用匿名函數:

$name = function() { 
    // code 
}; 
// execution 
$name(); 

阿爾斯如果你只是試圖調用動態功能只需使用call_user_func()這樣的:

// name of the function 
$str = 'bla'; 
// paramters to the function 
$param = array(); 
call_user_func($str, $param); 

但我認爲你做錯了什麼。這種「黑客」是惡意應用程序體系結構的標誌。

參考

+0

這是爲wordpress動態包含模塊。我沒有找到另一種方式來做到這一點。 add_submenu_page()需要一個包含其中內容的函數。所以每個模塊都需要一個新的功能。在它包含頁面的功能中。 我仍然希望自己不會造成「糟糕的應用程序結構」,因爲這不是我通常編程的方式 – 2012-02-14 00:11:39

-2

每當一個函數完成,它返回一個值。如果未設置返回值,則返回0。

如果您希望能夠做到,你問的是,你可以做到以下幾點:

function blah($string="Blah"){ 
return($string); 
} 


echo blah("Banana"); //echo's Banana 
echo blah(); //echo's Blah 
$str = blah("Apple"); //Sets $str to Apple 
3

我會建議你,而不是像這樣使用。但是,如果你仍然想這樣做,

<?php 
$greet = function($name) 
{ 
    printf("Hello %s\r\n", $name); 
}; 

$greet('World'); 
$greet('PHP'); 
?> 

Check here

你需要使用PHP 5.3

相關問題