सरल विवरण PHP OOP बनाम प्रक्रियात्मक?


106

मैं PHP सीखना चाहूंगा और OOP और प्रक्रियात्मक के बारे में एक विचार प्राप्त करना चाहता हूं। मैं OOP बनाम प्रक्रियात्मक के बारे में कुछ अन्य ब्लॉग और ट्यूटोरियल पढ़ता हूं लेकिन मैं अभी भी दृष्टिकोण को नहीं समझ सकता हूं।

ओओपी बनाम प्रक्रियात्मक

  1. जो मुझे सीखना चाहिए?
  2. क्या कोड में अंतर है? प्रभाव क्या हैं?
  3. OOP aproach में एक PHP फ्रेमवर्क कैसे मदद कर सकता है? (मैं CodeIgniter सीखना चाहूंगा)
  4. क्या प्रक्रियात्मक को एक रूपरेखा की आवश्यकता है?

मैं वास्तव में दोनों के कोड अंतर को जानना चाहता हूं, ओओपी की मेरी समझ है कि क्या आप एक वर्ग बनाते हैं और इसे एक्सेस किया जा सकता है। (मुझे पता नहीं कि क्या सही है)।

धन्यवाद!



1
चेहरा जब यह एक बहुत लंबी कड़ी नहीं है
Félix Gagnon-Grenier


यह भी देखें: blog.higher-order.com/blog/2009/04/27/...
dreftymac

जवाबों:


279

पृष्ठभूमि: आपने "सरल व्याख्या" के लिए कहा जो सुझाव देता है:

  1. आप एक गैर-बकवास अवलोकन चाहते हैं शब्दजाल के बिना
  2. आप कुछ ऐसा चाहते हैं जो आपकी मदद करे शुरुआत से सीखने में
  3. आपने पाया है कि कोई भी दो व्यक्ति कभी भी इस सवाल का जवाब नहीं देते हैं , और यह भ्रमित करने वाला है। यही कारण है कि आप यहाँ एक सरल स्पष्टीकरण के लिए पूछ रहे हैं। हाँ?

लघु नहीं-शब्दजाल उत्तर:

  1. कई परिचयात्मक स्पष्टीकरण "ओओपी वास्तविक दुनिया" उदाहरणों में जल्दी से कूदते हैं। वे मदद से अधिक भ्रमित कर सकते हैं, इसलिए अब के लिए इसे अनदेखा करने के लिए स्वतंत्र महसूस करें।
  2. आप स्रोत कोड को केवल कार्यक्षमता के "हिस्सा" के रूप में सोच सकते हैं, जो कि केवल व्यक्तिगत फ़ाइलों को सहेजने के लिए होता है।
  3. उन "विखंडू" के आयोजन के विभिन्न तरीके हैं; प्रोग्रामिंग भाषा की परंपराओं, डेवलपर की पृष्ठभूमि और प्रशिक्षण या सामान्य व्यक्तिगत प्राथमिकता के आधार पर चीजों पर निर्भर करता है।
  4. OOP और प्रक्रियात्मक प्रोग्रामिंग कोड के उन "विखंडू" को व्यवस्थित और व्यवस्थित करने के लिए बस दो मुख्य, आम तौर पर मान्यता प्राप्त कार्यप्रणाली हैं।

लंबे समय से नहीं, शब्दजाल:

प्रक्रियात्मक बनाम OOP कंप्यूटर प्रोग्रामिंग के मूल मुद्दे का सिर्फ एक पहलू है: अपने कोड को समझना आसान कैसे करें और पेशेवर रूप से बनाए रखने के लिए केक का एक टुकड़ा । आप वास्तव में "प्रक्रियात्मक" कोड लिख सकते हैं जो ओओपी के कुछ सिद्धांतों का पालन करता है, इसलिए दोनों आवश्यक रूप से विपरीत नहीं हैं।

अन्य ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज सीखने के बाद आपकी समझ वास्तव में बढ़ेगी , जिसके बीच, PHP एक "ब्लॉक पर नया बच्चा" है।

यहां एक त्वरित अवलोकन है कि आप अनुभव के निर्माण के साथ क्या सीखेंगे:

  • आप PHP स्रोत कोड लिख सकते हैं जो उपयोगी कार्य करता है
  • आप उपयोगी कार्यों को कोड के "विखंडू" में व्यवस्थित कर सकते हैं
  • आप व्यक्तिगत फ़ाइलों के कोड के "विखंडू" के बारे में सोच सकते हैं जहां वे सहेजे गए हैं
  • कभी-कभी कोड के "विखंडू" मापदंडों के आधार पर अलग-अलग व्यवहार करेंगे आपके द्वारा पास किए गए
  • मापदंडों को स्वीकार करने वाले कोड को "कार्य" कहा जाता है
  • फ़ंक्शंस को एक साथ "घुट" किया जा सकता है , और ऐसा करने के विभिन्न तरीके हैं:
    • उदाहरण के लिए: आपके पास पूरे जीवन में आपके द्वारा लिखे गए सभी कार्यों के साथ सिर्फ एक बड़ी PHP फ़ाइल हो सकती है, जिसे फ़ंक्शन नाम से वर्णानुक्रम में सूचीबद्ध किया गया है
    • उदाहरण के लिए: आपके पास कई पीएचपी फाइलें हो सकती हैं, जो विषयवस्तु के साथ मिलकर काम करती हैं [जैसे, बुनियादी स्ट्रिंग हेरफेर करने के लिए कार्य, सरणियों के प्रसंस्करण के लिए कार्य, फ़ाइल इनपुट / आउटपुट के लिए कार्य आदि]
  • OOP एक साथ "chunking" फ़ंक्शंस का एक विशेष तरीका है "क्लास" में एक
  • ए क्लास "चैंकिंग" का सिर्फ एक और स्तर है कोड का एक साथ है ताकि आप इसे पूरे एकीकृत के रूप में सकें
  • एक वर्ग को तरीकों और गुणों के "मंथन" के रूप में सोचा जा सकता है

    • तरीकों केवल ऐसे कार्य हैं जो तार्किक रूप से एक दूसरे से किसी सार्थक तरीके से संबंधित हैं। शब्द "विधि" और "फ़ंक्शन" मूल रूप से एक ही चीज़ के लिए दो अलग-अलग शब्द हैं।
    • गुण केवल डेटा मान हैं जो कक्षा से संबंधित हैं। ये ऐसे मूल्य हैं जो जानबूझकर किसी भी व्यक्तिगत कार्य के लिए अलग-थलग हैं, क्योंकि एक से अधिक हैं कक्षा में कार्यों के लिए उनकी पहुंच होनी चाहिए।
      • उदाहरण के लिए : यदि आपकी कक्षा में खगोल विज्ञान करने के तरीकों का एक समूह है, तो वर्ग के गुण कुछ प्रसिद्ध संख्याओं के लिए मूल्य हो सकते हैं, जिनके बारे में सभी खगोल विज्ञान विधियों को पता होना चाहिए (जैसे पाई, प्रकाश की गति, विशिष्ट ग्रहों के बीच की दूरी, आदि।)।
    • यह वह जगह है जहां अधिकांश ओओपी स्पष्टीकरण भ्रमित हो जाते हैं क्योंकि वे " वास्तविक दुनिया के उदाहरणों " में बंद हो जाते हैं जो जल्दी से विषय को प्राप्त कर सकते हैं । अक्सर, "वास्तविक दुनिया" एक व्यक्ति विशेष के ऑन्कोलॉजिकल दृष्टिकोण के लिए एक व्यंजना है। यह तभी उपयोगी होगा जब आप पहले से ही किसी और को सिखाने के लिए अवधारणा को अच्छी तरह समझ लें
    • ओओपी को भ्रम के बिना समझने के लिए, आप अभी के लिए "वास्तविक दुनिया" के उदाहरणों को छोड़ सकते हैं, और बस कोड पर ध्यान केंद्रित कर सकते हैं। एक वर्ग बस एक तरह से फ़ंक्शंस (उर्फ तरीकों) और गुणों (उर्फ डेटा) को एक या अधिक संबंधित "चंक्स" में PHP कोड के रूप में संग्रहीत करने का एक तरीका है, जहां प्रत्येक व्यक्ति "चंक" एक विशिष्ट विषय या कार्यक्षमता के टुकड़े से संबंधित है। आरंभ करने के लिए आपको बस इतना जानना चाहिए।
  • एक क्लास उपयोगी है क्योंकि यह आपको एक बहुत उच्च स्तर पर अपने कोड को व्यवस्थित करने की अनुमति देता है जिससे आपको समझना, उपयोग करना और बनाए रखना आसान हो जाता है।

  • जब किसी ने बहुत सारे कार्य लिखे हैं, और उन्हें बहुत सारी कक्षाओं में व्यवस्थित किया है, और उन लोगों को कुछ शांत तरीके से एक साथ काम करने के लिए तैयार किया है, वे पूरी चीज़ को एक साथ पैकेज करते हैं और इसे "फ्रेमवर्क" कहते हैं
  • फ्रेमवर्क "चकिंग" (कोडिंग शैली और सम्मेलनों सहित) का अगला-उच्चतम स्तर है, जिस पर एक या अधिक लोग सहमत होते हैं क्योंकि वे कोड को व्यवस्थित करने के तरीके को पसंद करते हैं और यह दुनिया के लिए उनकी कार्य शैली, प्राथमिकताओं, मूल्यों, योजनाओं के अनुरूप है। वर्चस्व, आदि।

यह सभी देखें


1
@dreftymac: आपने मुझे इसके बारे में फीडबैक प्रदान किया होगा कि मेरे परिवर्धन में क्या सुधार किया जा सकता है, बजाय इसके कि मेरी पीठ के पीछे इसे हटा दें। वास्तव में। मैं रचनात्मक आलोचना का स्वागत करता हूं, और मैं आपको ऐसा करने के लिए आमंत्रित करता हूं।
फ्लेवियस

1
@ फैवेलियस ठीक है। प्रयास के लिए आभार, और परिवर्धन करने के लिए क्षण भर के लिए। इसके बारे में सोचने के बाद, यह उचित प्रतीत होता है कि आपके द्वारा किए गए जोड़ ने अपने स्वयं के अकेले-अकेले उत्तर का विलय कर दिया।
dreftymac

2
एक जोड़: फ़ंक्शन डेटा को एक साथ चून करने के लिए एक वर्ग भी उपयोगी है ताकि आपको इसे मापदंडों में इधर-उधर न करना पड़े।
चिबॉर्ग

1
+1 विशेष रूप से "फ्रेमवर्क" की आपकी परिभाषा के लिए। मैंने सुना है कि बहुत से लोग समझाने की कोशिश करते हैं कि ढांचा क्या है, और मुझे लगता है कि आपकी समझ सबसे आसान है।
टेकब्रैट

1
दोस्त ... यह मैंने ओप बनाम प्रक्रियात्मक के बारे में पढ़ा है और मैंने बहुत कुछ पढ़ा है! महान काम वास्तव में प्रभावी, सरल और सीधे मुद्दे पर। आप सही लोग हैं जो हमेशा वास्तविक दुनिया के उदाहरणों का उपयोग करते हैं और यह किसी भी चीज़ को समझने का आसान तरीका नहीं है, यह बकवास है!
द ऐक्रिसडैड

25

OOP एक डिज़ाइन पैटर्न से अधिक कुछ नहीं है। यदि आप अभी शुरुआत कर रहे हैं तो प्रक्रियात्मक दृष्टिकोण पर ध्यान देकर मूल बातें सीखें। सबसे महत्वपूर्ण बात, बुनियादी सिद्धांतों जैसे छोरों, स्थितियों और अन्य प्रक्रियाओं को कॉल करना।

जब आप अपना प्रक्रियात्मक कोड बना रहे हों, तो एकल स्रोत फ़ाइल के अंदर संबंधित तरीकों को जोड़कर एक आदत बनाएं। अपनी प्रक्रियाओं को तार्किक इकाइयों में विभाजित करना सीखें और फिर आप पहले से ही वस्तु-उन्मुख बनना शुरू कर देंगे। असल में, एक वस्तु उन तरीकों के संग्रह से ज्यादा कुछ नहीं है जो एक दूसरे से संबंधित हैं क्योंकि वे डेटा के एक ही सेट पर काम करते हैं। (यहाँ डेटाबेस की बात नहीं है, लेकिन आवेदन डेटा!)

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

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


3
मुझे लगता है कि कुछ OOP कोड अधिक भ्रमित करने वाला है। उदाहरण के लिए Prestashop के पेट में देखने का प्रयास करें।
एंड्रयूसी

Pretashop के बारे में शानदार बात। मैगेंटो एक स्टीमिंग जानवर है, लेकिन हमने इसके साथ बने रहने का फैसला किया क्योंकि प्रीताशोप या वूकोम जैसे विकल्प और भी बुरे हैं।
PKHunter

6

आपको दोनों सीखना चाहिए। ऑब्जेक्ट्स अस्तित्व में कई संभावित सार में से एक हैं, और अमूर्तता है कि प्रोग्रामिंग आखिरकार क्या है। यह कहा, प्रक्रियात्मक सामान के साथ शुरू, और फिर बाद में वस्तुओं को जोड़ने, क्योंकि PHP वस्तुओं के internals वैसे भी प्रक्रियात्मक हैं।

फ्रेमवर्क के लिए के रूप में; पहले भाषा के मूल सिद्धांतों को जानें, थ्रोअवे प्रायोगिक कार्यक्रम लिखें और ऐसे। बाद में आप खुद को चौखटे से परिचित कर सकते हैं और अपने आप पर विचार कर सकते हैं कि क्या आप उनमें से कुछ को किसी संदर्भ में उपयोगी पाते हैं। वे निश्चित रूप से अनिवार्य नहीं हैं।


6

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


6

प्रक्रियात्मक php और oop समान php कोड का उपयोग करते हैं। फिर केवल अंतर यह है कि प्रक्रियात्मक होने के साथ, आप एक कार्य पर ध्यान केंद्रित करते हैं और वह यह है। ऊप में, आप अपने कोड को पैटर्न या विखंडू का उपयोग करके व्यवस्थित करते हैं जिसे कोड के कई अलग-अलग क्षेत्रों में फिर से उपयोग किया जा सकता है।

सरल उत्तर यह है कि, आपको php को जानना और समझना होगा। आप इसे php.net पर सीख सकते हैं। एक बार जब आप इसे समझ जाते हैं, तो आप अपने कोड को चक में व्यवस्थित करना शुरू कर सकते हैं।

प्रक्रियात्मक कोड कार्यों, चर का उपयोग करता है।

एक बार जब आप चीजों को लटका देते हैं, तो आप कक्षाओं में कार्यों और चर का आयोजन शुरू कर सकते हैं। हम फ़ंक्शन को गुणों के रूप में विधियों और चर के रूप में कॉल करना शुरू करते हैं।

सौभाग्य।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.