बिल्डिंग मेरे पास एक ऐप है जो अनिवार्य रूप से किसी तृतीय पक्ष API के लिए एक रैपर है। ऐप डेटाबेस का उपयोग नहीं करता है और केवल एक कुकी को स्टोर करता है जो एपीआई की आवश्यकता होती है।PHP ओओपी :: एक एपीआई रैपर वर्ग
एपीआई एक शॉपिंग प्रणाली है जो करने के लिए
-login/रजिस्टर/प्रोफ़ाइल संपादित करें/लॉगआउट
खरीदें माल
एक दान बनाओ
-become एक सदस्य उपयोगकर्ताओं की अनुमति देता है
एपीआई में 50 या तो विधियां हैं जिनसे मेरे ऐप को कनेक्ट करने की आवश्यकता है। उदाहरण एपीआई कॉल addItemToBasket(), addDonation(), GetUserDetails() इत्यादि
मैं अपने आवेदन में कक्षाओं में क्या होना चाहिए, यह जानने का प्रयास कर रहा हूं। यहाँ मैं अब तक है:
क्लासेस
1) APIManager() वर्ग तरीकों कि एक-से-एक 3 पार्टी एपीआई में उजागर तरीकों के साथ मेल खाते हैं और प्रदान करता है शामिल रिमोट एपीआई सर्वर से कनेक्शन बनाने के लिए तंत्र। इसलिए, यदि उपयोगकर्ता के माध्यम से
APIManager->loginUser($sessionKey, $uid, $pwd);
में लॉग इन किया जाएगा और दूरदराज के एपीआई उपयोगकर्ता के रूप में लॉग इन सेट चाहते हैं की जरूरत हो, मेरे ऐप की जांच कर सकते हैं किसी भी सत्र कुंजी की स्थिति में लॉग इन एपीआई फोन करके:।
APIManager->isLoggedIn($sessionKey);
2) उपयोगकर्ता() वर्ग यह तरीकों कि व्यापार में इस तरह के रजिस्टर या लॉग इन के रूप में API कॉल संसाधित करने से पहले आवश्यक तर्क शामिल रखती है। एक उदाहरण विधि है:
function login($_POST) {
//perform sanity checks, apply business rules etc.
//if certain conditions are met, we may pass in a promo code, $pc
APIManager->loginUser($sessionkey, $_POST['uid'], $_POST['pwd'], $pc);
}
मुझे लगता है कि मैं शायद सिर्फ लॉगिन पृष्ठ के APIManager को कॉल कर सकते हैं, बल्कि एक उपयोगकर्ता वर्ग से प्रति की तुलना में, लेकिन मुझे लगा कि कुछ व्यापार तर्क से पहले चलाने की जरूरत है के बाद से हम वास्तव में एपीआई की loginUser() विधि को कॉल करते हैं, यह उपयोगकर्ता वर्ग के भीतर संभालने का अधिकार महसूस करता है। मैं जानना चाहता हूं कि लोग इसके बारे में क्या सोचते हैं।
3) टोकरी() वर्ग
टोकरी 3 पार्टी एपीआई में किया जाता है, इसलिए मेरे ऐप की भूमिका उचित API टोकरी के लिए नए आइटम जोड़ने के, आइटम निकालने कॉल करने के लिए है देखने टोकरी इत्यादि। मेरा ऐप टोकरी के बारे में कुछ भी नहीं जानता है जब तक कि एपीआई से डेटा पुनर्प्राप्त नहीं किया जाता है, न ही यह एपीआई के बिना टोकरी में कोई भी बदलाव कर सकता है। फिर, यह इस संबंधित तर्क को बास्केट क्लास में समूहित करने के लिए उपयुक्त महसूस किया। सामने के छोर वेब पेज की तरह कुछ कह सकते हैं:
Basket->addItem(23);
और टोकरी कक्षा में इस addItem() विधि तरह दिखता होगा:
addItem($itemID) {
//perform checks, apply business rules e.g. if user is eligible for discount
APIManager->addToCart($itemID, $discount);
}
जहां addToCart जैसा() तृतीय पक्ष API विधि है हम आइटम को संसाधित करने के लिए कॉल करें।
4) दान() वर्ग
यह उपयोगकर्ताओं को दान देने के लिए अनुमति देता है। टोकरी में दान दिखाई देता है और टोकरी से हटाया जा सकता है। मैं सिर्फ टोकरी वर्ग के लिए एक addDonate() विधि को जोड़ने और सभी में एक दान वस्तु होने की चिंता न के बारे में सोचा है, लेकिन ... (देखें नीचे)
5) सदस्यता() वर्ग
। .. सदस्यता वास्तव में दान का एक प्रकार है! एपीआई दान को 1 साल की सदस्यता के रूप में एक निश्चित खाते में जाने का इलाज करेगा, और सादा दान नहीं। हम तृतीय पक्ष एपीआई के तर्क/व्यवहार को नहीं बदल सकते हैं।
तो, अगर मैं खाता '1' के लिए $ 50 दान करता हूं तो यह सिर्फ एक सामान्य दान है, लेकिन अगर मैं '8' खाते में $ 100 दान करता हूं तो मैं सभी सदस्य लाभ (कम कीमत, कोई डाक शुल्क इत्यादि) के साथ सदस्य बन जाता हूं।)।
यहां वह जगह है जहां मुझे इसे डिजाइन करने का सबसे अच्छा तरीका नहीं है।
क्या मुझे दान श्रेणी बनाना चाहिए और उसके बाद सदस्यता के साथ विस्तार करना चाहिए, क्योंकि सभी दान विधियों को सदस्यता द्वारा आवश्यक होगा। लेकिन सदस्यता को नवीनीकरण() या getExpiry() आदि जैसे अतिरिक्त तरीकों की आवश्यकता होगी
साथ ही, क्या मुझे सदस्य बनने के लिए उपयोगकर्ता को विस्तारित करना चाहिए? दोबारा, एक सदस्य के पास उपयोगकर्ता की सभी मूल विधियां होती हैं, लेकिन इसमें अतिरिक्त हैं जैसे getSpecialOffers() या getDiscountCode() जो केवल सदस्य ही पहुंचेंगे।
डिज़ाइन तक पहुंचने के तरीके में कोई मार्गदर्शन बहुत सराहना की जाएगी।
धन्यवाद, जेम्स
नहीं जवाब आप के लिए देख रहे हैं, लेकिन मुझे क्या मदद करता है जब एक वस्तु केंद्रित डिजाइन में कुछ भी डिजाइनिंग एक चित्र बाहर आकर्षित करने के लिए है ऑब्जेक्ट्स, जहां सामान्यता है वहां काम कर रहे हैं आदि। यदि आप गोता लगाने और कोड करने से पहले ऐसा करते हैं तो आप पाएंगे कि आपके पास इसका एक आसान समय है। और आप लंबे समय तक कुछ और बनाए रखने के साथ खत्म हो जाएगा। – diagonalbatman