2011-11-15 12 views
6

में सर्वश्रेष्ठ अभ्यास शामिल करें मैं सिम्फनी 2 में एक नौसिखिया हूं और मुझे समझ में नहीं आ रहा है कि मुझे अपने कस्टम क्रॉस-प्रोजेक्ट फ़ंक्शंस (उदा। array_merge_overwrite, array_last इत्यादि) के साथ कहां बनाना चाहिए। मैं दोनों प्रकार के ऐप्स का उपयोग करता हूं: वेब (एमवीसी) और कंसोल (ContainerAwareCommand बढ़ाता है)।उपयोगकर्ता कस्टम फ़ंक्शंस को सिम्फनी 2

या इसके लिए कोई और "सही तरीका" है?

+1

अच्छे उत्तर [सिम्फनी 2 वैश्विक कार्यों] के साथ समान प्रश्न (http://stackoverflow.com/questions/10336401/symfony2-global-functions)। –

उत्तर

7

service बनाएं और इसमें अपनी सामान्य कार्यक्षमता डालें। उदाहरण के लिए, आप इसे ArrayService नाम दे सकते हैं और इसे array.service के रूप में कंटेनर में पंजीकृत कर सकते हैं। इसके बाद आप के माध्यम से

$this->getContainer()->get('array.service'); 

$this->get('array.service'); 

के माध्यम से और आदेश से नियंत्रकों से इस सेवा का उपयोग कर सकते हैं तो, अपने कोड कुछ इस तरह दिखेगा:

$element = $this->get('array.service')->last($array); // or ->arrayLast($array) 

आप ही कार्यक्षमता की जरूरत है कई परियोजनाओं में, उस सेवा के साथ एक बंडल बनाएं और इसे प्रत्येक प्रोजेक्ट की deps फ़ाइल में जोड़ें। फिर जब आप bin/vendors install स्क्रिप्ट चलाते हैं तो यह इंस्टॉल हो जाएगा।

0

आप अपने कार्यों को ऑटोलोड करने योग्य बनाने के लिए कुछ वर्ग के स्थैतिक तरीकों में परिवर्तित कर सकते हैं। या ... अच्छी तरह से ... उन्हें रखें जहां आप चाहते हैं और आवश्यकता है() जहां से आपको हर बार उनकी आवश्यकता होती है।

+0

यदि मैं आपको सही ढंग से समझता हूं, सिम्फनी समस्या के लिए समाधान प्रदान नहीं करता है, और मुझे ** ** ** आवश्यकता/स्क्रिप्ट का उपयोग करना चाहिए जो मैं सिम्फनी का उपयोग करता हूं, है ना? – MingalevME

+0

@MingalevME हां, अगर आप अभी भी 2011 में प्रक्रियात्मक प्रोग्रामिंग पर हैं। ओओपी पर स्विच करने का प्रयास करें। –