2013-03-15 5 views
10

मार्ग पैरामीटर तक कौन सी पहुंच तेज है? $this->getRequest()->get('param') symfony2 मार्ग पैरामीटर प्राप्त कर रहा है (नियंत्रक तर्क बनाम अनुरोध)

से

नियंत्रक तर्कों के रूप
  1. रखें मार्ग मापदंडों
  2. हो रही मार्ग मानकों और क्या बारे में अनुरोध वस्तु? बेहतर तरीका अनुरोध ऑब्जेक्ट को नियंत्रक पैरामीटर के रूप में रखा गया है या नियंत्रक ऑब्जेक्ट पर getRequest() विधि को कॉल करें?

उत्तर

15

कोई यह तर्क दे सकता है कि आपको Request कंटेनर से ऑब्जेक्ट खींचने की आवश्यकता है, यह धीमा दृष्टिकोण है, लेकिन मैंने दोनों किया है और अंतर नगण्य है। जब आपको Request ऑब्जेक्ट की आवश्यकता होती है तो इसे नियंत्रक विधि तर्क के रूप में रखना बेहतर होता है, क्योंकि आपके पास तुरंत यह होगा और PHP टाइप हिनटिंग सभ्य आईडीई में अतिरिक्त जानकारी (स्वतः पूर्ण और इतनी) प्रदान करेगी (मैं व्यक्तिगत रूप से PHPStorm की अनुशंसा करता हूं)। यह अन्य नियंत्रक विधि तर्कों पर भी लागू होता है, आपको सीधे चर दिए जाते हैं, उन्हें अन्य स्थानों से दो बार खींचने की आवश्यकता नहीं होती है।

class SthController extends Controller 
    { 
    public function indexAction(Request $request, $arg1, $arg2) 
    { 
    // you have $request object with type hint and all goodness 
    } 
    } 
+0

Thx। और कंट्रोलर से टिग टेम्पलेट तक पैरामीटर पास करने के बारे में क्या - नियंत्रक से तेज़ पास पैरामीटर कौन सा तरीका है, या {{{app.request.get ('name')}} द्वारा twig टेम्पलेट में पैरामीटर प्राप्त करें? – NHG

+0

प्रदर्शन के लिए, समान नियम लागू होते हैं ('app.request.get' सीधे '$ कंटेनर-> प्राप्त करें (' अनुरोध ') -> प्राप्त करें (' नाम ')') पर सीधे अनुवाद करता है। लेकिन कोडिंग शैली के लिए, आपको 'ऐप' चर पर भरोसा नहीं करना चाहिए क्योंकि यह सभी परिस्थितियों में उपलब्ध नहीं है (ईएसआई के साथ प्रयोग करने का प्रयास करें, टेम्पलेट में शामिल है या ऐसा है और आप महीने पहले मेरे जैसा ही स्थिति में समाप्त हो जाएंगे) - सर्वोत्तम तरीका टेम्पलेट अनुरोध प्रस्तुत करने से पहले गणना की जाने वाली सभी डेटा भेजने का तरीका है। –

-2

मुझे लगता है कि आपको getRequest() विधि का उपयोग करना चाहिए क्योंकि यह अधिक गतिशील है!

+0

'getRequest()' '$ this-> कंटेनर-> प्राप्त करें ('अनुरोध') के लिए सिर्फ एक शॉर्टकट है, लेकिन क्रिया पैरामीटर से अनुरोध ऑब्जेक्ट प्राप्त करना DI दृष्टिकोण है जिसे शायद प्राथमिकता दी जानी चाहिए। यदि आप नियंत्रक को सेवा के रूप में उपयोग करते हैं तो वास्तव में कोई 'getRequest() 'विधि नहीं है। –

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