2011-03-20 12 views
5

मैं अपने कोड में इस का उपयोग कर रहा हूँ ':

call_user_func_array (array ($controller, $method), $this->params); 

लेकिन मुझे पता चला कि नीचे कोड एक ही बात करता है:

$controller->$method($this->params); 

वहाँ दो संस्करणों के बीच कोई अंतर है?

धन्यवाद

एडम Ramadhan

उत्तर

5

वे ही नहीं हैं।

तो $method है showAction और $this->paramsarray(2, 'some-slug') है, तो पहली कॉल के बराबर होगा:

$controller->showAction(2, 'some-slug'); 

जबकि दूसरा होगा:

$controller->showAction(array(2, 'some-slug')); 

आप कौन-सी का उपयोग करने पर निर्भर करता है चाहता हूँ आपका बाकी सिस्टम कैसे काम करता है (विशेष रूप से आपके नियंत्रक)। मैं व्यक्तिगत रूप से पहले के साथ जाना होगा।

+0

आह मैं देखता हूं, इसलिए यदि हम पैराम का उपयोग करना चाहते हैं तो पहला ($ संख्या, $ स्ट्रिंग) दूसरा $ डेटा ['0'] $ डेटा ['1'] होगा, वे किस तरह के प्रदर्शन के बारे में हैं कोई फर्क पड़ता है? (प्रमुख)? यदि नहीं तो शायद मुझे पहले व्यक्ति के साथ रहना चाहिए। क्योंकि हाँ मेरे आवेदन को काफी देखा गया। –

+2

कोई भी प्रदर्शन अंतर केवल ऑपकोड का एक छोटा सा मुट्ठी भर होगा, इसलिए कम से कम इस बारे में चिंता न करें। – Charles

0

वे ही बात कर रहे है, लेकिन दूसरा रूप, छोटे स्पष्ट है, और तेजी से होता है। इसे पसंद करें

4

वे समान रूप से काम करते हैं। केवल महत्वपूर्ण अंतर यह है कि $controller->$nonexistant() एक घातक त्रुटि उत्पन्न करेगा। जबकि call_user_func_array केवल एक E_WARNING के साथ विफल रहता है $method मौजूद नहीं होना चाहिए।

मज़ा तथ्य। आपके $ नियंत्रक एक बंद $ विधि बंदरगाह चाहिए, तो आप वास्तव में दोनों दृष्टिकोण गठबंधन करने के लिए होगा:

call_user_func_array ($controller->$method, $this->params); 
संबंधित मुद्दे