"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > PHP OOP में एक्सेस संशोधक को समझना: सार्वजनिक, संरक्षित और निजी

PHP OOP में एक्सेस संशोधक को समझना: सार्वजनिक, संरक्षित और निजी

2024-11-08 को प्रकाशित
ब्राउज़ करें:338

Understanding Access Modifiers in PHP OOP: Public, Protected, and Private

PHP ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) में, एक्सेस संशोधक क्लास गुणों और विधियों की दृश्यता को नियंत्रित करते हैं। PHP में प्राथमिक एक्सेस संशोधक सार्वजनिक, संरक्षित और निजी हैं।

यह आलेख आपको इन एक्सेस संशोधकों के उद्देश्य और उपयोग के बारे में बताएगा और समझाएगा कि उन्हें PHP OOP में प्रभावी ढंग से कैसे लागू किया जाए।

1. सार्वजनिक पहुँच संशोधक

  • कीवर्ड: सार्वजनिक
  • दृश्यता: कहीं से भी पहुंच योग्य-कक्षा के अंदर, कक्षा के बाहर और व्युत्पन्न कक्षाओं में।
  • उपयोग मामला: उन संपत्तियों या विधियों के लिए सार्वजनिक का उपयोग करें जिन्हें किसी भी संदर्भ से पहुंच योग्य होना चाहिए।

उदाहरण:

class User {
    public $name = "John";

    public function greet() {
        return "Hello, " . $this->name;
    }
}

$user = new User();
echo $user->greet();  // Output: Hello, John

इस उदाहरण में, संपत्ति $name और विधि greet() दोनों सार्वजनिक हैं, जिससे उन्हें कक्षा के बाहर से सीधे एक्सेस किया जा सकता है।

2. संरक्षित एक्सेस संशोधक

  • कीवर्ड: संरक्षित
  • दृश्यता: कक्षा के भीतर और उपवर्गों (बाल वर्गों) द्वारा पहुंच योग्य, लेकिन बाहर से नहीं कक्षा से।
  • केस का उपयोग करें: व्युत्पन्न वर्गों को बाहरी कोड से छिपाकर रखते हुए कुछ गुणों या विधियों तक पहुंचने की अनुमति देने के लिए संरक्षित का उपयोग करें।

सही पहुँच वाला उदाहरण:

class Person {
    protected $age = 30;

    protected function getAge() {
        return $this->age;
    }
}

class Employee extends Person {
    public function showAge() {
        return $this->getAge();  // Correct: Accesses protected method within a subclass
    }
}

$employee = new Employee();
echo $employee->showAge();  // Output: 30

इस उदाहरण में, getAge() एक संरक्षित विधि है, जो कर्मचारी वर्ग, व्यक्ति के एक उपवर्ग के भीतर पहुंच योग्य है।

त्रुटि के साथ उदाहरण:

class Person {
    protected $age = 30;

    protected function getAge() {
        return $this->age;
    }
}

$person = new Person();
echo $person->getAge();  // Error: Cannot access protected method Person::getAge()

त्रुटि संदेश: घातक त्रुटि: ध्यान में न आया त्रुटि: संरक्षित विधि तक नहीं पहुंच सकता व्यक्ति::getAge()

इस मामले में, व्यक्ति के उदाहरण से सीधे संरक्षित विधि getAge() तक पहुंचने का प्रयास करने पर त्रुटि उत्पन्न होती है क्योंकि संरक्षित विधियां कक्षा के बाहर से पहुंच योग्य नहीं होती हैं।

3. निजी एक्सेस संशोधक

  • कीवर्ड: निजी
  • दृश्यता: केवल उस वर्ग के भीतर पहुंच योग्य जहां इसे परिभाषित किया गया है। पहुंच योग्य नहीं है उपवर्गों या बाहरी कोड से।
  • केस का उपयोग करें: व्युत्पन्न कक्षाओं सहित वर्ग के बाहर किसी भी कोड से गुणों या विधियों को छिपाने के लिए निजी का उपयोग करें।

सही पहुँच वाला उदाहरण:

class BankAccount {
    private $balance = 1000;

    private function getBalance() {
        return $this->balance;
    }

    public function showBalance() {
        return $this->getBalance();  // Correct: Accesses private method within the same class
    }
}

$account = new BankAccount();
echo $account->showBalance();  // Output: 1000

इस उदाहरण में, getBalance() विधि निजी है, इसलिए इसे केवल BankAccount वर्ग के भीतर ही एक्सेस किया जा सकता है। शोबैलेंस() विधि सार्वजनिक है और इसका उपयोग अप्रत्यक्ष रूप से निजी गेटबैलेंस() तक पहुंचने के लिए किया जा सकता है।

त्रुटि के साथ उदाहरण:

class BankAccount {
    private $balance = 1000;

    private function getBalance() {
        return $this->balance;
    }
}

$account = new BankAccount();
echo $account->getBalance();  // Error: Cannot access private method BankAccount::getBalance()

त्रुटि संदेश: घातक त्रुटि: ध्यान में न आया त्रुटि: निजी पद्धति तक नहीं पहुंच सकता BankAccount::getBalance()

इस मामले में, BankAccount के उदाहरण से सीधे निजी विधि getBalance() तक पहुंचने का प्रयास करने पर एक त्रुटि उत्पन्न होती है क्योंकि निजी विधियां कक्षा के बाहर से पहुंच योग्य नहीं होती हैं।

उपवर्ग में त्रुटि के साथ उदाहरण:

class BankAccount {
    private $balance = 1000;

    private function getBalance() {
        return $this->balance;
    }
}

class SavingsAccount extends BankAccount {
    public function showBalance() {
        return $this->getBalance();  // Error: Cannot access private method BankAccount::getBalance()
    }
}

$savings = new SavingsAccount();
echo $savings->showBalance();

त्रुटि संदेश: घातक त्रुटि: ध्यान में न आया त्रुटि: निजी पद्धति तक नहीं पहुंच सकता BankAccount::getBalance()

यहाँ, निजी विधि getBalance() SavingsAccount जैसे उपवर्गों के लिए भी पहुंच योग्य नहीं है, यह दर्शाता है कि निजी विधियों को उनके परिभाषित वर्ग के बाहर नहीं पहुँचा जा सकता है।

4. एक्सेस संशोधक का सारांश

संशोधक कक्षा के अंदर व्युत्पन्न वर्ग कक्षा के बाहर
जनता हाँ हाँ हाँ
संरक्षित हाँ हाँ नहीं
निजी हाँ नहीं नहीं

5. सर्वोत्तम प्रथाएं

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

निष्कर्ष

PHP के एक्सेस संशोधक (सार्वजनिक, संरक्षित, निजी) OOP में दृश्यता और एनकैप्सुलेशन को प्रबंधित करने के लिए एक तंत्र प्रदान करते हैं। इन संशोधकों को सही ढंग से समझकर और लागू करके, आप अधिक सुरक्षित और रखरखाव योग्य कोड बना सकते हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/ialaminpro/understandard-access-modifiers-in-php-oop-public-protected-and-private-5bah?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3