2010-05-04 11 views
11

सिद्धांत का उपयोग करते समय मैं इन 2 शब्दों पर ठोकर खाता हूं: एक्सेसर और म्यूटेटर।एक्सेसर और म्यूटेटर?

क्या ये केवल सिद्धांत में उपयोग किए जाते हैं या वे php के लिए विशिष्ट हैं?

और उनका क्या अर्थ है?

धन्यवाद

उत्तर

22

वे getters और setters के लिए सिर्फ कल्पना शर्तों रहे हैं।

class MyClass 
{ 
    private $prop; 

    // Accessor (or Getter) 
    public function getProp() 
    { 
     return $this->prop; 
    } 


    // Mutator (or Setter) 
    public function setProp($value) 
    { 
     $this->prop = $value; 
    } 

} 
+4

और स्पष्टीकरण के लिए, वे ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में उपयोग की जाने वाली सामान्य शब्द हैं, चाहे भाषा या ढांचा चाहे। – nickf

+1

तो वे गेटर्स और सेटर्स के बजाय उन्हें एक्सेसर्स और म्यूटेटर क्यों कहते हैं? वे जादू विधियों नहीं हैं, जो कहना है, अगर वे setProp टाइप करते हैं() लेकिन इसके लिए एक विधि परिभाषित नहीं की है, तो यह स्वचालित रूप से नहीं बनाई जाएगी? –

+1

@ फेयर एक्सेसर और म्यूटेटर कंप्यूटर विज्ञान में उपयोग किए जाने वाले अधिक सामान्य शब्द हैं। गेटर और सेटर मुझे लगता है कि अधिक आकस्मिक तरीका है ... शायद एक बदमाश। जब तक मुझे पता है, यह आपके लिए php में जादू के रूप में जादू नहीं बनायेगा ... विनिर्देशों को देखने की आवश्यकता है ... सुनिश्चित करें कि यह नहीं होगा। – m0s

2

यदि मैं आपको सही ढंग से समझता हूं तो ये 2 ऑब्जेक्ट उन्मुख प्रोग्रामिंग भाषा का अनुमान लगाने के लिए विशिष्ट हैं। मुद्दा यह है कि एक्सेसर एक विधि या एक फ़ंक्शन है जो आपकी कक्षा में निजी फ़ील्ड तक पहुंच प्रदान करता है और म्यूटेटर विधि निजी फ़ील्ड को संशोधित करने की अनुमति देता है। मैं इसके बारे में लिखने जा सकता हूं, लेकिन मेरा सुझाव है कि आप इन्हें केवल Google पर भेजें, और आपको इसके बारे में बहुत सारी जानकारी मिल जाएगी। इसके बारे में सब कुछ encapsulation < - आपको उस शब्द को देखने के लिए भी सुझाव देता है।

+0

मुझे उन लोगों के बारे में सोचना पसंद है जो नियमित कार्यों के रूप में सोचते हैं जो कुछ सामान्य ज्ञात उद्देश्य प्रदान करते हैं ... और कुछ नहीं। – m0s

0

वे कम से कम नहीं, लेटरवेल में गेटर्स और सेटर्स के लिए अलग-अलग शब्द नहीं हैं।

दस्तावेज़ीकरण को उद्धृत करने के लिए: "एक्सेसर्स और म्यूटेटर आपको मॉडल से पुनर्प्राप्त करते समय या उनके मूल्य को सेट करते समय वांछित विशेषताओं को प्रारूपित करने की अनुमति देते हैं।"

https://laravel.com/docs/master/eloquent-mutators

तो, आप कह सकते हैं कि getters और setters accessors और mutators जो शून्य का एक पहलू से डेटा को बदलने का एक सबसेट है।

दूसरे शब्दों में कहें, अगर मैं एक मेज से एक कच्चे क्षेत्र "लागत" प्राप्त करना चाहता था, मैं एक गेटर का प्रयोग करेंगे। अगर मैं उस क्षेत्र को पाउंड और पेंस में व्यक्त और स्वरूपित करना चाहता था, तो मैं एक एक्सेसर का उपयोग कर सकता था।

इसके बारे में अन्य तरीके भी जा सकते हैं, लेकिन यह एक विकल्प है।

+0

क्या आप "शून्य के कारक द्वारा बदलना" समझा सकते हैं? धन्यवाद! –

+0

निश्चित रूप से। एक्सेसर्स और म्यूटेटर नए मूल्य को सहेजने या वापस करने से पहले एक मूल्य बदलते हैं। सेटर्स और इसे मान में बदलाव न करें। तो जब मैंने कहा "शून्य के कारक से" मेरा मतलब था "कोई बदलाव नहीं"। आपने अभी मूल्य में कुछ भी नहीं जोड़ा है। – Puzbie

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