2013-01-14 17 views
5

मैं एक प्रोजेक्ट पर काम कर रहा हूं जिसमें दो घटक हैं:एक ही सर्वर पर दो PHP अनुप्रयोगों के बीच संचार?

1) एक कोडइग्निटर फ्रेमवर्क है जिसमें मैं अपने सभी कस्टम कोड का निर्माण करूँगा।

2) दूसरा एमडब्ल्यूएस एपीआई के लिए अमेज़ॅन के PHP एसडीके पुस्तकालय है।

मुद्दा यह है कि, मेरे कोडइग्निटर कोड और अमेज़ॅन के एसडीके दोनों को अपने स्वयं के ऑटोलोड() की आवश्यकता होती है।

अमेज़ॅन के एसडीके को और भी 3-4 घटकों में विभाजित किया गया है, उनमें से प्रत्येक का अपना ऑटोलोड लोड है, इसलिए यदि आप उत्पाद के एसडीके के साथ काम करना चाहते हैं, और फिर उसी सत्र में एसडीके की रिपोर्ट करते हैं, तो आप दौड़ेंगे पहले से परिभाषित autoload समारोह।

इस कारण से, मैं अपने कोड और अमेज़ॅन की एसडीके फ़ाइलों के बीच संचार के लिए एक वेब सेवा प्रणाली स्थापित करने के बारे में सोच रहा हूं, भले ही वे एक ही सर्वर पर हों, लेकिन कम से कम इस तरह के नामकरण संघर्ष हो सकते हैं बचा। I.e मैं कोडइग्निटर के बाहर एक फ़ाइल को HTTP अनुरोध भेजूंगा, जो अमेज़ॅन के एसडीके से निपटेंगे, और जेएसओएन या एक्सएमएल में एक प्रतिक्रिया वापस कर देगा।

मुझे नहीं लगता कि नामस्थान एक विकल्प हैं क्योंकि मैं एसडीके में प्रत्येक फ़ाइल/कक्षा के माध्यम से नहीं जाना चाहता हूं और नामस्थान विवरण जोड़ना चाहता हूं।

मेरा सवाल है, क्या इस विधि के साथ कोई प्रदर्शन समस्या है जिसके बारे में मुझे अवगत होना चाहिए? और नामस्थानों के अलावा कोई तरीका है कि इस विधि से बचा जा सकता है?

+0

मैं इस धारणा के तहत था कि यदि पुस्तकालय एसपीएल ऑटोलोडर का उपयोग करते हैं, तो कई लोग एक साथ सह-अस्तित्व में रह सकते हैं। क्या वे सभी वास्तव में विरासत '__autoload()' फ़ंक्शन का उपयोग करते हैं? मुझे यह सोचना चाहिए कि अगर दो अमेज़ॅन पैकेज इस कारण से अच्छी तरह से काम नहीं करेंगे, तो कोई इसे पहले से ही एक बग/सुधार टिकट के रूप में उठाएगा। – halfer

+0

@ हेलफर मैंने नवीनतम एसडीकेएस और हाँ डाउनलोड किया है, वे विरासत '__autoload' –

+0

का उपयोग करते हैं कि आप कितने अजीब हैं कि आप कई साथ उपयोग नहीं कर सकते! खैर, अगर मैं पहले से मौजूद नहीं हूं, तो मैं इसके बारे में टिकट उठाऊंगा। एक और दृष्टिकोण: क्या अमेज़ॅन और सीआई के लिए ऑटोलोडर लोड नहीं करना संभव है, और इसे सभी को एक साथ चिपकाने के लिए लिखना संभव है? – halfer

उत्तर

1

बस एक अलग फाइल करने के लिए अपने autoloader कार्यों की नकल, उनका नाम बदल, और spl_autoload_register इस प्रकार के साथ उन्हें हुक:

<?php 
function loadFrameworkOne($name) { 
    // contents of __autoload from framework one. 
} 
function loadFrameworkTwo($name) { 
    // contents of __autoload from framework two. 
} 
spl_autoload_register('loadFrameworkOne'); 
spl_autoload_register('loadFrameworkTwo'); 

यह, जल्दी गंदे और मेरे सिर के ऊपर से है;)

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