2012-03-03 9 views
5

मैं PHP में एक फ़ंक्शन लिखा जाना चाहता हूं जो ~ 5 पैरामीटर अज्ञात फ़ंक्शंस बना सकता है और उन्हें वापस कर सकता है ताकि मैं उन्हें एक कुंजी/मान सरणी में संग्रहीत कर सकूं और बाद में दिए गए पैरामीटर के बारे में किसी भी ज्ञान के बिना उन्हें कॉल कर सकूं और एक से ज्यादा बार।वापसी अनाम कार्य

उदा।

$fun(); 

मैं बाद में वापसी और पुन: प्रयोज्य कॉलिंग कैसे प्राप्त करूं?

अग्रिम धन्यवाद।

+0

आपका मतलब एक स्थिर कार्य या गतिशील कार्य है? यह http://php.net/manual/en/function.create-function.php –

+0

की सहायता कर सकता है आपको PHP5.3 बंद करने की आवश्यकता है –

+0

हां। मेरे पास $ fun = function ($ p1, $ p2, $ p3 ..) { जादू सामग्री जैसी मजेदार है; }; और मैं $ मज़े ("foo", "bar", "bazz") के साथ कॉलिंग से छुटकारा पाना चाहता हूं; इसलिए मैं फ़ंक्शन बनाना चाहता हूं जैसे कि यह erlang में है कि मैं इसे $ short() के साथ कॉल कर सकता हूं; – reindeer

उत्तर

11

आपका मतलब कुछ ऐसा है?

<?php 
function setData($user, $pass, $host){ 
    return function() use ($user, $pass, $host){ 
    return array($user, $pass, $host); 
    }; 
} 

//set the data once 
$container = setData('test', 'password', 'localhost'); 
//use the function without passing the data again (and it should be noted, you 
//can't set the data again) 
var_dump($container()); 

और उत्पादन:

 
array(3) { 
    [0]=> 
    string(4) "test" 
    [1]=> 
    string(8) "password" 
    [2]=> 
    string(9) "localhost" 
} 

आपके उपयोग के मामले के बारे में सुनिश्चित नहीं हैं, लेकिन मेरा उदाहरण के लिए समारोह के उत्पादन में एक फ़ॉर्मेट डीएनएस के साथ-साथ सरल सरणियों हो सकता है।

जैसा कि अन्यत्र उल्लेख किया गया है, func_get_args इस काम को किसी भी तर्क के साथ बना देगा।

+0

मुझे लगता है कि यह है और phpunit का कहना है कि यह भी काम करता है! तेज़ और फिटिंग उत्तर के लिए धन्यवाद;) – reindeer

+0

क्या आप अज्ञात फ़ंक्शन को एक चर में सहेजे बिना चला सकते हैं? यानी 'सेटडाटा (' टेस्ट ',' पासवर्ड ',' लोकलहोस्ट ')() '? – tgun926

2

http://php.net/manual/en/functions.anonymous.php

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

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

पर एक नज़र $greet चर एक और समारोह द्वारा दिया जा सकता है अगर आप की जरूरत है।

अन्य चीजों को आपको मनमाने ढंग से तर्क सूची पढ़ने के लिए func_get_args() पर देखने की आवश्यकता हो सकती है।

संबंधित मुद्दे