पहुंच के तरीके। सबसे लोकप्रिय स्थितियों

यह लेख मुख्य रूप से शुरुआती डेवलपर्स के लिए या उन लोगों के लिए है, जो प्रोग्रामिंग की प्रक्रियात्मक शैली से ओओपी पर स्विच करना शुरू कर रहे हैं, इसलिए, अनुभवहीन गुरु ड्राइव न करें :)



गुणों और विधियों तक पहुंच अधिकार पहली नज़र में केवल तीन शब्द हैं: निजी, संरक्षित और सार्वजनिक। लेकिन उनके पीछे क्या है? यह विकास में क्या लाभ प्रदान करता है? और उनका सही उपयोग कैसे करें? यहाँ, प्रोग्रामिंग के अन्य सभी पहलुओं की तरह, कोई भी अभ्यास के बिना समझ नहीं सकता है ...



OOP की तीन मुख्य अवधारणाओं में से एक विरासत है (अन्य दो एन्कैप्सुलेशन और बहुरूपता हैं)। सामान्य तौर पर, यह उसके लिए था कि एक्सेस अधिकारों का एहसास हुआ। वंशानुक्रम का मूल विचार: एक बच्चा वस्तु, जब एक माता-पिता को विरासत में मिला (विस्तार), सभी माता-पिता के तरीकों और गुणों को संभालते हैं, और स्वयं भी प्राप्त कर सकते हैं। इस आधार को समझते हुए, आप सब कुछ नीचे जा सकते हैं ...



निजी - एक विधि या संपत्ति को केवल उस वर्ग में उपलब्ध घोषित करता है जिसमें वह मौजूद है। अर्थात्, हम वस्तुओं या बाल वर्गों से निजी तरीकों और गुणों तक नहीं पहुँच सकते हैं।



संरक्षित - संरक्षित विधि या संपत्ति की घोषणा करता है। यही है, उन है कि एक वस्तु है कि एक वर्ग लागू करता है से पहुँचा नहीं जा सकता है, लेकिन बच्चे कक्षाओं में इस्तेमाल किया जा सकता है।



जनता - public। जनता द्वारा घोषित कक्षाएं और विधियाँ कक्षा के भीतर और बाल कक्षाओं में और कक्षा को लागू करने वाली वस्तुओं में दोनों तक पहुँचा जा सकता है।



मैं तुरंत ध्यान देना चाहता हूं कि विरासत के साथ, एक्सेस के तरीके केवल अधिक वफादार लोगों में बदल सकते हैं। अर्थात् निम्नलिखित अनुक्रम में, लेकिन इसके विपरीत नहीं: निजी → संरक्षित → सार्वजनिक



इसके अलावा, विधियाँ अंतिम हो सकती हैं , अर्थात जिन्हें वंशजों में अधिभूत नहीं किया जा सकता है।



सामान्य तौर पर, सभी एक्सेस विधियों का उपयोग कोड के स्व-दस्तावेजीकरण के लिए पूरी तरह से किया जाता है और कोई तार्किक घटक नहीं होता है, इसलिए उनके बिना जीवन केवल कठिन है, लेकिन असंभव नहीं है, जो PHP4 द्वारा साबित होता है, जिसमें सभी तरीके और गुण सार्वजनिक थे ...



अभ्यास



कभी-कभी ऐसी स्थितियां होती हैं जब ये पहुंच विधियां पर्याप्त नहीं होती हैं। उदाहरण के लिए, हम कुछ संपत्ति को पढ़ने के लिए किसी ऑब्जेक्ट से एक्सेस कर सकते हैं, लेकिन इसे लिखने में सक्षम नहीं हैं। सबसे सरल उपाय यह है कि सार्वजनिक संपत्ति की घोषणा करें और टिप्पणी / * केवल पढ़ने के लिए * जोड़ें, लेकिन आप गलती से टिप्पणी के बारे में भूल सकते हैं और निष्पादन के बीच में एक गैर-मानक मूल्य को तोड़कर कार्यक्रम के व्यवहार को बर्बाद कर सकते हैं। तो यह गेटर्स (गेट्टर) का उपयोग करने का समय है। एक गेट्टर एक वर्ग विधि से ज्यादा कुछ नहीं है जो किसी वस्तु से गैर-सार्वजनिक गुणों को पढ़ने की असाधारण क्षमता को लागू करता है। यहाँ एक उदाहरण है:

class A {

private $a = 7;// ,



public function getA() { //

return $this->a; //

}

}



$obj = new A();

echo $obj->getA();// $a









सेटर्स (सेटर \ _) भी इसी तरह से व्यवहार करते हैं, जब हमें किसी वैरिएबल का मान सेट करने में सक्षम होना चाहिए, लेकिन इसे सीधे नहीं पढ़ना चाहिए, उदाहरण के लिए, इसका उपयोग होने से पहले इसे परिवर्तित किया जाना चाहिए। सेटर विधि उदाहरण:

//...

public funtion setA($value) { //

$this->a = $value; // $a ,

}

//...









विधियों तक पहुंच को लागू करने के लिए एक अन्य विकल्प, जब विधि को केवल हर जगह पढ़ा जाना चाहिए, \ "छद्म-गुण \" को लागू करना है:



class A {

public function getValue() {

static $value;



if (empty($value)) {

$value = //... -

}



return $value;

}

}







उपरोक्त उदाहरण में, क्लास ए में छद्म संपत्ति $ मूल्य होगा। छद्म - क्योंकि यह विशेष रूप से विधि के माध्यम से कार्यान्वित किया जाता है, और इसके लिए उपयोग केवल पढ़ने के लिए संभव है। आप यह भी देख सकते हैं कि मैंने संपत्ति के निर्माण को अंतिम क्षण तक और उसी समय \ "कैश \" पर स्थगित करने के लिए पैटर्न "" आलसी इनिशियलाइज़ेशन \ "का उपयोग किया। जहां यह लागू किया जा सकता है अच्छी तरह से PHP में OOP के बारे में अगले विषय में सचित्र है।



निजी पद्धति का उपयोग करके सभी गुणों को छिपाने के लिए और अपनी आवश्यकताओं के आधार पर, उनके लिए बसने या गेट बनाने के लिए यह अच्छा अभ्यास है, लेकिन आपको सावधान रहने की जरूरत है कि अगर संपत्ति के लिए एक सेटर और गेट्टर है, और कोई अतिरिक्त डेटा प्रोसेसिंग तर्क नहीं है, तो उन्हें निकालना आसान नहीं है , और संपत्ति सार्वजनिक करें? :)



All Articles