2012-04-04 17 views
6

के साथ तृतीय पक्ष फ़ाइलों को शामिल करने के लिए मैं जानना चाहता हूं कि symfony2 में तृतीय पक्ष php फ़ाइलों को शामिल करने का सबसे अच्छा तरीका क्या है। मैं अपने symfony2 एप्लिकेशन में फ़ाइलों को अपलोड करने के लिए एक अलग php - AJAX पैकेज का उपयोग कर रहा हूं। पैकेज मुझे कुछ php oops कोड प्रदान करता है जिसे मुझे अपने सिम्फनी नियंत्रक में उपयोग करने की आवश्यकता है। मैं अपने नियंत्रक में उस कोड की ऑब्जेक्ट्स बना रहा हूं। इसलिए मैं जानना चाहता हूं कि मैं उस तृतीय पक्ष कोड या फ़ाइल को कहां रख सकता हूं और मैं अपने symfony2 नियंत्रक में उस कोड की ऑब्जेक्ट्स को कैसे शामिल या बना सकता हूं। क्या हम symfony2 में आवश्यकता या उपयोग शामिल हैं। यदि ऐसा ही एकमात्र दृष्टिकोण है।सर्वश्रेष्ठ दृष्टिकोण सिम्फनी 2

उत्तर

7

मैं किसी तृतीय पक्ष लाइब्रेरी में नामस्थान जोड़ने की कोशिश करने के बारे में इतना निश्चित नहीं हूं। उदाहरण के लिए, Twig नाम रिक्त स्थान का उपयोग नहीं करता है। और वास्तव में कोई ज़रूरत नहीं है। उदाहरण के लिए एक ऐसे मामले पर विचार करें जहां आप Zend_Framework 1 लाइब्रेरी से पीडीएफ घटक का उपयोग करना चाहते हैं।

अपने अनुप्रयोग/autoload.php फ़ाइल में आप की तरह कुछ करना होगा:

$loader->registerPrefixes(array(
    'Twig_Extensions_' => $ws . 'Symfony/vendor/twig-extensions/lib', 
    'Twig_'   => $ws . 'Symfony/vendor/twig/lib', 
    'Zend_'   => $ws . 'ZendFramework-1.0.0/library', 
)); 

// And since Zend internally uses require/include we need to set an include path 
ini_set('include_path','.' . 

    PATH_SEPARATOR . $ws . 'ZendFramework-1.0.0/library' 

); 

इस बिंदु पर हम नियंत्रकों के अंदर 3 हिस्सा वस्तुओं को बनाने के करते समय autoload प्रणाली की खोज की देखभाल में सक्षम होना चाहिए और कक्षाओं सहित:

$page = new \Zend_Pdf_Page(\Zend_Pdf_Page::SIZE_A4); 
    $doc->pages[] = $page; 

    $font1 = \Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_HELVETICA); 
    $font2 = \Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_COURIER_BOLD); 

आप नेमस्पेसिंग की कमी से बचने के लिए \ उपयोग करने के लिए है।

यह उत्तर मानता है कि आपकी तीसरी भाग पुस्तकालय कम या ज्यादा मानक वर्ग नामकरण सम्मेलन का पालन करती है। यदि इसकी अपनी ऑटो लोडिंग कार्यक्षमता है तो इसे autolaod.php से भी कॉल करें। और यदि आप ऑटोलोडिंग का उपयोग नहीं करना चाहते हैं तो बस पथ शामिल करें और शामिल करें।

+1

जैसे फ़ाइल के शीर्ष पर एक लाइन की तलाश करके देख सकते हैं। ऐसा करने का यह सही तरीका है। यदि कोई लाइब्रेरी किसी भी नामकरण सम्मेलन का पालन नहीं करती है, तो मैं संगीतकार ([repo] (https://github.com/composer/composer), [symfony] का उपयोग शुरू करने का सुझाव दूंगा (https://github.com/symfony/symfony -मानक))। यह किसी भी लाइब्रेरी के मैपिंग की अनुमति देता है, जो परंपराओं का पालन न करने वाले उन libs के लिए स्वत: लोडिंग संभव बनाता है। – gilden

3

The documentation निर्देशिका संरचना विस्तार से बताता है।

असल में, आप जहां भी चाहें उन्हें डाल सकते हैं, लेकिन स्थिरता और सर्वोत्तम प्रथाओं के पालन के लिए, आपको अपनी तीसरी पार्टी लाइब्रेरी vendor/ निर्देशिका में रखना चाहिए।

से अधिक आप नामस्थानों के साथ प्रासंगिक फ़ाइलों को शामिल कर सकते हैं।

+1

ग्रेट उत्तर! मुझे थोड़ी देर पहले यह स्थिति थी और इसे ठीक तरह से हल किया गया ... –

+0

@ हाकन डेरियल। आपकी प्रतिक्रिया के लिए धन्यवाद, क्या आप कृपया मुझे बता सकते हैं कि क्या मैंने विक्रेता में तृतीय पक्ष के रूप में एक फ़ोल्डर बनाया है और वहां मेरी तीसरी पार्टी फ़ाइल रखी है जैसे कि विक्रेता/तृतीयparty/myfile.php मैं इसे अपने Acme बंडल में कैसे शामिल कर सकता हूं। – ScoRpion

+0

क्या नामस्थान का उपयोग कर तीसरा पक्ष आवेदन है? आप इसे 'नेमस्पेस ....' –