PHP वर्ग पदानुक्रम को व्यवस्थित करने का सर्वोत्तम तरीका




frameworks class-structure (2)

मुझे अपनी परियोजनाओं में से कुछ का उपयोग करने के लिए कुछ पुरानी रूपरेखा मिल गई है, लेकिन एक सामान्य डिज़ाइन समस्या यह थी कि मैं अभी तक काम नहीं कर पा रहा हूं। किसी दिए गए आवेदन के लिए, क्या मैं फ्रेमवर्क की संरचना से आवेदन-विशिष्ट वर्ग की संरचना को अलग करनी चाहिए या ढाँचे के शीर्ष पर निर्माण करना चाहिए, ऐसी कोई बुरी चीज नहीं है?

उदाहरण के लिए, कहते हैं कि मेरे पास एक बेस कंट्रोलर वर्ग के साथ एक ढांचा था और इसे मेरे आवेदन के एक भाग के लिए बढ़ा दिया गया था। कौन सा व्यवस्था सबसे अधिक समझदारी बनाता है, और क्यों?

कक्षा संरचना ए:

  • डीबगिंग करते समय सहज, स्रोत फ़ाइलों को खोजने में आसान।
  • फ़ाइल नामकरण / निर्देशिका संरचना दर्पण वर्ग उत्कर्ष
- Framework_Control                 "Framework\Control.php"
   - Framework_Control_Index        "Framework\Control\Index.php"
   - Framework_Control_Home         "Framework\Control\Home.php"
   - Framework_Control_Contact      "Framework\Control\Contact.php"
   - Framework_Control_About        "Framework\Control\About.php"

कक्षा संरचना बी:

  • फ्रेमवर्क मॉड्यूलर और आसानी से बदलने / अद्यतन करने के लिए रखता है
  • निर्देशिका संरचना, निर्देशिका / फ़ाइल नामकरण के लिए कुछ जटिलता जोड़ता है, हर समय क्लास उत्तराधिकार का पालन नहीं करता।
- Framework_Control                 "Framework\Control.php"
   - Application_Control_Index      "Application\Control\Index.php"
   - Application_Control_Home       "Application\Control\Home.php"
   - Application_Control_Contact    "Application\Control\Contact.php"
   - Application_Control_About      "Application\Control\About.php"

मुझे पता है कि यह व्यक्तिगत वरीयता में उतरने वाला है, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि मैं किस तरह से जाने का फैसला करता हूं, इससे पहले कि मैं सभी पेशेवरों और विपक्षों का वजन करता हूं। यह वास्तव में वर्ग नामकरण और निर्देशिका संरचना के लिए नीचे आता है क्योंकि वास्तविक पदानुक्रम दोनों ही मामले में समान रहेगा।


क्या वास्तव में नीचे आता है यह है कि जब आप अनुप्रयोग XYZ में Framework \ Control.php को अपडेट करते हैं तो आप क्या करेंगे। क्या आप एबीसी आवेदन पर वापस जा सकते हैं और उसी बदलाव को बना सकते हैं? क्या होगा अगर यह एक महत्वपूर्ण बग है?

अपनी सभी परियोजनाओं के रखरखाव के लिए मैं आपके दूसरे विकल्प के साथ जाना चाहता हूं।


मैं सुझाव दूंगा कि आप अपने स्रोत कोड को दो अलग-अलग श्रेणियों, बाहरी निर्भरताएं या कोड में देख सकते हैं जो एकाधिक साइट्स में उपयोग किया जाता है और किसी भी एक और देशी निर्भरता के मूल नहीं है या उस कोड पर जो आपके द्वारा काम कर रहे विशेष साइट का मूल है ।

यह फ़्रेमवर्क / कंट्रोल.php जैसी बड़ी बाहरी निर्भरता का हिस्सा है और इस तरह प्रबंधित किया जाना चाहिए, जबकि एप्लिकेशन / कंट्रोल फ़ाइलें सभी विशिष्ट वेबसाइट हैं।

हमारे कोड संरचना में इस भेदभाव का उपयोग करके हमने बहुत से साइट्स के बीच हमारे इन-हाउस ढांचे का पुन: उपयोग करना आसान बना दिया है

अंतिम विचार के रूप में, आप देख सकते हैं कि ज़ेंड फ़्रेमवर्क, सिम्फनी और अन्य जैसे बड़े फ्रेमवर्क क्या कर रहे हैं। हालांकि संपूर्ण ढांचा आप जितना अधिक हो सकता है वैसे फ्रेमवर्क की संरचना चाहते हैं कि वे सामान्य, अच्छे प्रथाओं में बहुत सारी अंतर्दृष्टि प्रदान कर सकें जो कि हर जगह PHP डेवलपर द्वारा उपयोग किए जा रहे हैं।





class-hierarchy