PHP मा परिमार्जकहरू पहुँच गर्नुहोस्

PHP मा निर्माणकर्ता र विनाशकहरू
PHP OOP मा विरासत

PHP मा, पहुँच परिमार्जनहरू वस्तु-उन्मुख प्रोग्रामिंग (OOP) को एक महत्त्वपूर्ण भाग हो। तिनीहरूले वर्ग चर वा विधिहरूको दायरा निर्दिष्ट गर्छन् र तिनीहरू कसरी पहुँच गर्न सकिन्छ। यस पोष्टमा, हामी PHP मा पहुँच परिमार्जनहरूको विभिन्न प्रकारहरू हेर्नेछौं र तिनीहरूलाई कसरी प्रयोग गर्ने उदाहरणहरू प्रस्ताव गर्नेछौं।

PHP मा परिमार्जक प्रकारहरू पहुँच गर्नुहोस्

PHP मा, पहुँच परिमार्जकहरूलाई सार्वजनिक, निजी, वा सुरक्षित रूपमा वर्गीकृत गरिन्छ।

  • सार्वजनिक: सार्वजनिक रूपमा सेट गरिएको विधि वा विशेषता जताततै पहुँच गर्न सकिन्छ। यो PHP मा पूर्वनिर्धारित पहुँच परिमार्जक हो।
  • निजी: एक विधि वा विशेषता जुन निजीमा सेट गरिएको छ त्यो कक्षा भित्र मात्र पहुँच गर्न सकिन्छ जुन यो सिर्जना गरिएको हो।
  • संरक्षित: एक विधि वा विशेषता जुन सुरक्षितमा सेट गरिएको छ त्यो वर्ग भित्र पहुँच गर्न सकिन्छ जसमा यो सिर्जना गरिएको छ, साथै त्यो वर्गबाट ​​प्राप्त हुने वर्गहरूमा।

उदाहरण

class Person{
  public $name;
  protected $age;
  private $height;
}

$x= new Person();
$x->name = 'John'; // OK
$x->age= '32'; // ERROR
$x->height= '5.4'; // ERROR

माथिको उदाहरणमा, हामी तीनवटा विशेषताहरू भएको "व्यक्ति" वर्गलाई परिभाषित गर्छौं, प्रत्येकमा छुट्टै पहुँच परिमार्जनकर्ता। "नाम" विशेषता सार्वजनिक छ, "उमेर" विशेषता सुरक्षित छ, र "उचाइ" विशेषता निजी हो। जब हामी कक्षा बाहिर "नाम" विशेषता पहुँच गर्ने प्रयास गर्छौं र यसमा मान थप्छौं, सबै कुरा राम्रोसँग काम गर्दछ। यद्यपि, कक्षा बाहिर "उमेर" र "उचाइ" गुणहरूमा मानहरू थप्ने प्रयास गर्दा घातक त्रुटि हुन्छ।

सार्वजनिक, निजी, र सुरक्षित विधिहरू

class Person{
  public $name;
  public $age;
  public $height;

  function set_name($n) {  // a public function (default)
    $this->name = $n;
  }
  protected function set_age($a) { // a protected function
    $this->age = $a;
  }
  private function set_height($h) { // a private function
    $this->height = $h;
  }
}

$person = new Person();
$person->set_name('John'); // OK
$person->set_age('26'); // ERROR
$person->set_height('5.4'); // ERROR

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

उन्नत पहुँच परिमार्जनकर्ता: सार र अन्तिम

PHP ले नियमित पहुँच परिमार्जकहरूको अतिरिक्त "अमूर्त" र "अन्तिम" नामक परिष्कृत पहुँच परिमार्जनहरू प्रदान गर्दछ।

  • एउटा अमूर्त पहुँच परिमार्जनक कक्षा र विधिहरूमा मात्र प्रयोग गर्न सकिन्छ। यो क्लास ब्लुप्रिन्ट निर्माण गर्न प्रयोग गरिन्छ, यद्यपि क्लास इन्स्ट्यान्टियट गर्न सकिँदैन। एब्स्ट्र्याक्ट मेथडहरू ती विधिहरू हुन् जसलाई एब्स्ट्र्याक्ट क्लासबाट इनहेरिट गर्ने प्रत्येक वर्गले लागू गर्नुपर्छ।
  • कक्षाहरू, विधिहरू, र गुणहरू सबैलाई अन्तिम पहुँच परिमार्जक दिन सकिन्छ। यो विस्तारित वा ओभरराइड हुनबाट वर्ग वा विधि निषेध गर्न प्रयोग गरिन्छ।

उदाहरण

abstract class Bike {

    private $maxSpeed = 80;

    // Simple method
    public function drivingSpeed() {
        return "Driving at " . $this->maxSpeed . " kilometer/hour";
    }

    // Abstract method
    abstract public function drive();
}

class Police extends Bike {

    public function drive() {
        return "Driving out of speed limit.";
    }

}

$bike= new Police();
echo $bike->drivingSpeed();

माथिको उदाहरणमा, हामी निर्माण गर्छौं सार "बाइक" नामक वर्ग जसमा "ड्राइभ()" नामक एब्स्ट्र्याक्ट प्रकार्य छ। त्यसपछि हामी "प्रहरी" नामक नयाँ कक्षा निर्माण गर्छौं विस्तार गर्दछ "बाइक" वर्ग र "ड्राइभ()" प्रकार्य लागू गर्दछ। हामी यसको सट्टा "पुलिस" वर्ग प्रयोग गर्छौं किनभने हामी अमूर्त वर्गको वस्तु निर्माण गर्न सक्दैनौं।

अन्तमा, पहुँच परिमार्जकहरू PHP मा OOP को एक महत्त्वपूर्ण भाग हो र वर्ग चर वा प्रकार्यहरूको दायरा सीमित गर्न प्रयोग गरिन्छ। पहुँच परिमार्जकहरू बुझ्न र प्रभावकारी रूपमा प्रयोग गर्नाले तपाईंलाई थप सुरक्षित र मर्मत योग्य कोड विकास गर्न मद्दत गर्न सक्छ।

प्रश्नोत्तर

प्रश्न: पहुँच परिमार्जनहरू के हुन्?
A: पहुँच परिमार्जकहरूले वर्ग चर वा विधिहरूको दायरा परिभाषित गर्दछ, साथै तिनीहरू कहाँ पहुँच गर्न सकिन्छ। PHP मा, पहुँच परिमार्जकहरूलाई सार्वजनिक, निजी, वा सुरक्षित रूपमा वर्गीकृत गरिन्छ।

Q: पूर्वनिर्धारित पहुँच परिमार्जक के हो?
A: PHP को पूर्वनिर्धारित पहुँच परिमार्जक सार्वजनिक छ। यदि तपाईंले PHP वर्गमा विधि वा विशेषता सिर्जना गर्दा पहुँच परिमार्जनकर्ता प्रदान गर्नुभएन भने, यो पूर्वनिर्धारित रूपमा सार्वजनिक रूपमा सेट गरिएको छ।

प्रश्न: निजी र सुरक्षित पहुँच परिमार्जकहरू बीच के भिन्नता छ?
A: एक निजी विधि वा विशेषता वर्ग भित्र मात्र पहुँच योग्य हुन सक्छ जसले यसलाई उत्पन्न गर्यो, तर एक सुरक्षित विधि वा विशेषता वर्ग भित्र पहुँच गर्न सकिन्छ जसले यसलाई सिर्जना गरेको छ र साथै त्यो वर्गबाट ​​विरासत प्राप्त वर्गहरू।

प्रश्न: के तपाइँ PHP मा एब्स्ट्र्याक्ट एक्सेस परिमार्जक प्रयोग गर्ने उदाहरण दिन सक्नुहुन्छ?

abstract class Bike {
    private $maxSpeed = 80;
    abstract public function drive();
}
class Police extends Bike {
    public function drive() {
        return "Driving out of speed limit.";
    }
}

माथिको उदाहरणमा, हामीले "बाइक" नामक एब्स्ट्र्याक्ट क्लास बनाउँछौं जसमा "ड्राइभ()" नामक एब्स्ट्र्याक्ट प्रकार्य छ। हामी अब "पुलिस" नामक नयाँ वर्ग निर्माण गर्छौं, जसले "बाइक" वर्गलाई विस्तार गर्छ र "ड्राइभ()" प्रकार्य लागू गर्छ। हामी यसको सट्टा "पुलिस" वर्ग प्रयोग गर्छौं किनभने हामी अमूर्त वर्गको वस्तु निर्माण गर्न सक्दैनौं।

प्रश्न: अन्तिम पहुँच परिमार्जक कसरी काम गर्छ?
A: अन्तिम पहुँच परिमार्जनक वर्ग, विधि र गुणहरूमा लागू गर्न सकिन्छ। यो वर्ग विस्तार गर्न वा ओभरराइड हुनबाट एक विधि रोक्न प्रयोग गरिन्छ। यसको मतलब यो हो कि अन्तिम वर्गबाट ​​प्राप्त हुने कुनै पनि वर्ग विस्तार गर्न सकिँदैन, र अन्तिमको रूपमा चिन्ह लगाइएको कुनै पनि विधिलाई ओभरराइड गर्न सकिँदैन।

व्यायाम गर्नुहोस्:

  1. PHP मा पूर्वनिर्धारित पहुँच परिमार्जक के हो?
  2. PHP मा निजी र सुरक्षित पहुँच परिमार्जकहरू बीच के भिन्नता छ?
  3. PHP मा एब्स्ट्र्याक्ट एक्सेस परिमार्जक प्रयोग गर्ने उदाहरण दिनुहोस्।
  4. अन्तिम पहुँच परिमार्जकले कसरी काम गर्छ?
  5. तपाईं एक अमूर्त वर्ग को एक वस्तु सिर्जना गर्न सक्नुहुन्छ? किन वा किन नगर्ने ?
  6. के तपाइँ बाल कक्षामा अन्तिम विधि ओभरराइड गर्न सक्नुहुन्छ? किन वा किन नगर्ने ?
  7. के तपाइँ यसलाई सिर्जना गरिएको कक्षा बाहिर निजी विशेषतालाई मान तोक्न सक्नुहुन्छ? किन वा किन नगर्ने ?
  8. के यो सिर्जना गरिएको कक्षा बाहिर सुरक्षित विधि पहुँच गर्न सकिन्छ? किन वा किन नगर्ने ?

जवाफहरू:

  1. PHP मा पूर्वनिर्धारित पहुँच परिमार्जक सार्वजनिक छ।
  2. PHP मा एक निजी विधि वा विशेषता केवल वर्ग भित्र पहुँच गर्न सकिन्छ जसमा यो सिर्जना गरिएको छ, जबकि एक सुरक्षित विधि वा विशेषता वर्ग भित्र पहुँच गर्न सकिन्छ जसमा यो सिर्जना गरिएको छ, साथै त्यो वर्गबाट ​​प्राप्त हुने वर्गहरूमा।
abstract class Bike {
    private $maxSpeed = 80;
    abstract public function drive();
}
class Police extends Bike {
    public function drive() {
        return "Driving out of speed limit.";
    }
}

4. अन्तिम पहुँच परिमार्जक कक्षाहरू, विधिहरू, र गुणहरूमा लागू गर्न सकिन्छ। यो वर्ग विस्तार गर्न वा ओभरराइड हुनबाट एक विधि रोक्न प्रयोग गरिन्छ।
5. होइन, हामी एब्स्ट्र्याक्ट क्लासको वस्तु बनाउन सक्दैनौं किनभने एब्स्ट्र्याक्ट क्लासले अन्य क्लासहरूको लागि ब्लुप्रिन्टको रूपमा काम गर्छ र वस्तु सिर्जना गर्न कन्स्ट्रक्टर हुँदैन।
6. होइन, हामी बाल कक्षामा अन्तिम विधि ओभरराइड गर्न सक्दैनौं किनकि यसलाई अन्तिमको रूपमा चिन्ह लगाइएको छ र ओभरराइड गर्न सकिँदैन।
7. होइन, हामी वर्ग बाहिरको निजी विशेषतालाई मान प्रदान गर्न सक्दैनौं जसले यसलाई उत्पन्न गर्यो किनभने विशेषता कक्षा भित्र मात्र उपलब्ध छ।
8. होइन, सुरक्षित विधिले यसलाई सिर्जना गरेको कक्षा बाहिर पहुँच गर्न सकिँदैन, तर त्यो कक्षाबाट व्युत्पन्न वर्गहरूद्वारा पहुँच गर्न सकिन्छ।

PHP मा निर्माणकर्ता र विनाशकहरू
PHP OOP मा विरासत
नजिक

PHP को बारेमा अप-टु-डेट रहनुहोस्!

हामी स्प्याम गर्दैनौं!

en English
X
माथि स्क्रोल गर्नुहोस्