php - advantage of repository pattern in laravel against instantiating a model in a controller constructor -


दो उदाहरण लेते हैं।

उदाहरण 1 ( रिपॉपीटरी पैटर्न )

इंटरफ़ेस

 < कोड> इंटरफ़ेस FooInterface {सार्वजनिक फ़ंक्शन सभी (); }   

मॉडल (इसे एक ढीला अवधि में प्रयोग करना)

  वर्ग FooModel लागू करता है FooInterface {सार्वजनिक फ़ंक्शन सभी () {वापसी डीबी: :( 'sometable') - & gt; मिल (); }}   

सेवा प्रदाता

  वर्ग FooServiceProvider ServiceProvider विस्तारित {सार्वजनिक फ़ंक्शन रजिस्टर () {$ this- & gt; ऐप- & Gt; बाँध ('फू \ फ़ूइंटरफेस', 'फू' फू मोडेल '); }   

config / app.php

  'प्रदाताओं' = & gt; सरणी (// - 'Foo \ FooServiceProvider'),   

और आखिरकार नियंत्रक :

  मॉडल के रूप में फू \ फ़ूइंटरफेस का उपयोग करें; सार्वजनिक फ़ंक्शन __ रचना (मॉडल $ मॉडल) {$ this- & gt; मॉडल = $ मॉडल; }   

अब मैं विधियों को $ this- & gt; मॉडल- & gt; सभी () के रूप में एक्सेस कर सकता हूं। यह बहुत अच्छा है! हम दूसरे उदाहरण को देखें।

उदाहरण 2 :

नियंत्रक :

  सार्वजनिक फ़ंक्शन __construct () {$ this - & gt; मॉडल = नया \ फ़ू \ फ़ू मॉडेल (); }   

अब मैं भी $ this-> मॉडल- & gt; सभी ();


प्रश्न

जैसा कि मैंने पढ़ा है, भंडार पद्धति का उपयोग करने का लाभ भविष्य में, आसानी से कॉन्फ़िगर करने योग्य / परिवर्तन योग्य इंटरफ़ेस सिस्टम है। जैसे

अगर मैं डीबी सिस्टम को बदलता हूं, मुझे सेवा प्रदाता में बाइंडिंग बदलने की जरूरत है।

लेकिन , मैं भी इसे आसानी से प्राप्त करने के लिए नियंत्रक का निर्माण में मॉडल संवेदना को आसानी से बदल भी सकता हूं I जैसे $ this- & gt; मॉडल = नया \ फ़ू \ फ़ू मॉडेल () से $ this-> मॉडल = नया \ बार \ बारमोडेल (); जहां बारमोडेल विभिन्न सिस्टम के तरीकों का आयोजन करेगा

वास्तव में मुझे यहां एक रिपॉज़िटरी पैटर्न के फायदे के पहलू में क्या याद आ रहा है? या इस विशेष मामले में, रिपॉज़िटरी पैटर्न अभी तक ज्यादा फायदा नहीं दे रहा है, किसी अन्य मामले में ऐसा हो सकता है? अगर यह हां है, तो वह स्थिति क्या हो सकती है?

p.s शब्द मॉडल का उपयोग केवल आयोजित के लिए किया जाता है।

यह वास्तव में नीचे आता है कि आपने अपना कोड सेट अप कैसे किया है आपके विशेष मामले में, बहुत लाभ होने वाला नहीं होगा।

लेकिन क्या होगा अगर आपके कोड में आपके मॉडल के कई अलग-अलग नियंत्रकों में कई इन्स्टीटिएशन होने की आवश्यकता है? उदाहरण के लिए, शायद आपके पास अपने यूज़र रिपॉजिटरी के लिए एक मॉडल है ऐसे कई नियंत्रक हो सकते हैं, जिन्हें उपयोगकर्ता के बारे में जानकारी प्राप्त करने की आवश्यकता होती है।

फिर अपने सभी नियंत्रकों के माध्यम से सभी संदर्भों को बदलने में परेशानी होगी (यानी आपका उदाहरण 2)। सिर्फ एक बार रिपोजिटरी को बदलने के लिए बेहतर (यानी आपका उदाहरण 1)।

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

Comments

Popular posts from this blog

c - Mpirun hangs when mpi send and recieve is put in a loop -

python - Apply coupon to a customer's subscription based on non-stripe related actions on the site -

java - Unable to get JDBC connection in Spring application to MySQL -