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

PHP मा OOP: एक शुरुआती गाइड
PHP मा परिमार्जकहरू पहुँच गर्नुहोस्

PHP, धेरै अन्य वस्तु-उन्मुख प्रोग्रामिङ भाषाहरू जस्तै, क्लास कन्स्ट्रक्टर र विनाशकहरूलाई समर्थन गर्दछ।

एक कन्स्ट्रक्टर एक हो विशिष्ट प्रकार्य जुन क्लास वस्तु बनाउँदा स्वचालित रूपमा बोलाइन्छ। कन्स्ट्रक्टरको प्रमुख कार्य भनेको वस्तुको गुणहरू प्रारम्भ गर्नु हो र तिनीहरूलाई पूर्वनिर्धारित मानहरूमा सेट गर्नु हो वा वस्तु गठन हुँदा तर्कको रूपमा आपूर्ति गरिएको मानहरू। कन्स्ट्रक्टरहरू PHP मा डबल अन्डरस्कोर (__) सिन्ट्याक्स र "निर्माण" वाक्यांशको साथ घोषणा गरिन्छ। "__construct" कन्स्ट्रक्टर विधिको नाम हुनुपर्छ। यहाँ "पेट" वर्गमा कार्यमा कन्स्ट्रक्टरको उदाहरण छ:

class Pet {
  public $nick_name;
  public $color;

  function __construct($name, $color) {
    $this->nick_name = $name;
    $this->color = $color;
  }
  function get_name() {
    return $this->nick_name;
  }
  function get_color() {
    return $this->color;
  }
}

$cat = new Pet("Whiskers", "Black");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();

जब हामीले नयाँ "पेट" वस्तु सिर्जना गर्छौं र "व्हिस्कर्स" र "ब्ल्याक" लाई प्यारामिटरको रूपमा राख्छौं, कन्स्ट्रक्टरले वस्तुको "निक नाम" र "रङ" गुणहरूलाई क्रमशः "व्हिस्कर्स" र "ब्ल्याक" मा सेट गर्छ। यी विशेषताहरूको मानहरू त्यसपछि "नाम प्राप्त गर्नुहोस्" र "रङ प्राप्त गर्नुहोस्" विधिहरू प्रयोग गरेर पुन: प्राप्त गर्न सकिन्छ।

एक विनाशक, अर्कोतर्फ, एक विशेष प्रक्रिया हो जुन आह्वान गरिन्छ जब कुनै वस्तु नष्ट हुन्छ वा मेमोरीबाट हटाइन्छ। यसको प्राथमिक कार्य भनेको वस्तुले प्रयोग गरिरहेको स्रोतहरू मुक्त गर्नु हो, जस्तै डाटाबेस जडानहरू समाप्त गर्ने वा मेमोरी खाली गर्ने। डिस्ट्रक्टरहरू PHP मा डबल अन्डरस्कोर (__) सिन्ट्याक्स र "नष्ट" शब्दको साथ घोषित गरिन्छ। "__destruct" विनाशकारी विधिको नाम हुनुपर्छ। यहाँ कार्यमा वर्ग विनाशकको ​​उदाहरण हो:

class Pet {
  public $nick_name;
  public $color;

  function __construct($name, $color) {
    $this->nick_name = $name;
    $this->color = $color;
  }
  function get_name() {
    return $this->nick_name;
  }
  function get_color() {
    return $this->color;
  }
  function __destruct() {
    echo "Goodbye, " . $this->nick_name . "!<br>";
  }
}

$cat = new Pet("Whiskers", "Black");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();

यस उदाहरणमा, जब स्क्रिप्ट समाप्त हुन्छ वा "पेट" वस्तु नष्ट हुन्छ, विनाशकर्तालाई तुरुन्तै बोलाइन्छ र "गुडबाय, व्हिस्कर्स!" प्रदर्शन गर्दछ। स्क्रिनमा।

यो बुझ्न महत्त्वपूर्ण छ कि PHP मा, कन्स्ट्रक्टरहरू र डिस्ट्रक्टरहरू म्यानुअल रूपमा प्रदर्शन गर्दैनन्; कुनै वस्तु सिर्जना वा नष्ट हुँदा तिनीहरू स्वचालित रूपमा बोलाइन्छ। तपाईले कन्स्ट्रक्टर आर्गुमेन्टका लागि पूर्वनिर्धारित मानहरू पनि निर्दिष्ट गर्न सक्नुहुन्छ। उदाहरणका लागि, यदि तपाइँ कन्स्ट्रक्टरको दोस्रो प्यारामिटर वैकल्पिक हुन चाहनुहुन्छ भने, तपाइँ यस प्रकारको पूर्वनिर्धारित मान परिभाषित गर्न सक्नुहुन्छ:

function __construct($name,$color = "Black") {
$this->nick_name = $name;
$this->color = $color;
}

यस उदाहरणमा, यदि छैन मूल्य दोस्रो प्यारामिटर प्रदान गरिएको छ जब वस्तु सिर्जना गरिन्छ, "रङ" गुण स्वतः "कालो" मा सेट हुनेछ।

यो नोट गर्न पनि महत्त्वपूर्ण छ कि यदि बच्चा वर्गले अभिभावक वर्ग विस्तार गर्दछ र चाहन्छ भने कल यसको आफ्नै कन्स्ट्रक्टरमा अभिभावक वर्ग कन्स्ट्रक्टर, यसले सिन्ट्याक्स "parent::__construct()" प्रयोग गर्न सक्छ। यदि बाल वर्गको आफ्नै कन्स्ट्रक्टर छैन भने, अभिभावक वर्गको कन्स्ट्रक्टरलाई सामान्य प्रकार्यको रूपमा विरासतमा दिइनेछ, जबसम्म यसलाई निजी घोषित गरिएको छैन।

संक्षिप्तमा, निर्माणकर्ता र विनाशकहरू विशेष विधिहरू हुन् जुन PHP मा वस्तुहरूका लागि स्रोतहरू प्रारम्भ र रिलीज गर्न प्रयोग गरिन्छ। तिनीहरू स्वचालित रूपमा बोलाइन्छ जब कुनै वस्तु सिर्जना वा नष्ट हुन्छ र वस्तु गुणहरूको लागि पूर्वनिर्धारित मानहरू सेट गर्न वा अन्य कार्यहरू गर्न प्रयोग गर्न सकिन्छ।

प्रश्नोत्तर

Q: PHP मा कन्स्ट्रक्टर के हो?

A: कन्स्ट्रक्टर एक विशिष्ट प्रकार्य हो जुन स्वचालित रूपमा आह्वान गरिन्छ जब वर्ग वस्तु बनाइन्छ। यसको प्राथमिक कार्य भनेको वस्तुको गुणहरू प्रारम्भ गर्नु हो, तिनीहरूलाई पूर्वनिर्धारित मानहरूमा सेट गर्नु वा वस्तु सिर्जना हुँदा तर्कको रूपमा आपूर्ति गरिएको मानहरू सेट गर्नुहोस्। कन्स्ट्रक्टरहरूलाई डबल अन्डरस्कोर (__) सिन्ट्याक्स प्रयोग गरेर "निर्माण" शब्दको साथ निर्दिष्ट गरिएको छ, र कन्स्ट्रक्टर विधिको नाम "__ निर्माण" हुनुपर्छ।

Q: PHP मा कन्स्ट्रक्टर कसरी घोषणा गरिन्छ?
A: कन्स्ट्रक्टरहरू PHP मा डबल अन्डरस्कोर (__) सिन्ट्याक्स र "निर्माण" वाक्यांशको साथ घोषणा गरिन्छ। "__construct" कन्स्ट्रक्टर विधिको नाम हुनुपर्छ।

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

प्रश्न: कसरी PHP मा एक विनाशक घोषणा गरिन्छ?
A: PHP मा, destructors शब्द "destruct" को साथमा डबल अन्डरस्कोर (__) सिन्ट्याक्स प्रयोग गरेर घोषणा गरिन्छ। विनाशक विधिको नाम "__destruct" हुनुपर्छ।

प्रश्न: के हामीले PHP मा कन्स्ट्रक्टरहरू र डिस्ट्रक्टरहरूलाई म्यानुअल रूपमा कल गर्न आवश्यक छ?
A: होइन, कुनै वस्तु सिर्जना वा नष्ट हुँदा कन्स्ट्रक्टरहरू र डिस्ट्रक्टरहरू स्वचालित रूपमा कल हुन्छन् र हामीले तिनीहरूलाई म्यानुअल रूपमा कल गर्नुपर्दैन।

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

function __construct($name, $color = "Black") {
    $this->nick_name = $name;
    $this->color = $color;
  }

प्रश्न: बाल वर्गले PHP मा अभिभावक वर्ग निर्माणकर्तालाई कसरी कल गर्न सक्छ?
A: यदि बाल वर्गले अभिभावक वर्ग विस्तार गर्छ र अभिभावक वर्ग कन्स्ट्रक्टरलाई आफ्नै कन्स्ट्रक्टरमा कल गर्न चाहन्छ भने, यसले त्यसो गर्नको लागि "parent::__construct()" सिन्ट्याक्स प्रयोग गर्न सक्छ।

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

  1. "मेक", "मोडल", र "वर्ष" र नयाँ वस्तु सिर्जना हुँदा यी मानहरू सेट गर्ने कन्स्ट्रक्टरका लागि गुणहरू सहित "कार" भनिने वर्ग सिर्जना गर्नुहोस्।
  2. "GetDetails" भनिने "कार" वर्गमा एउटा विधि थप्नुहोस् जसले कारको मेक, मोडेल र वर्षलाई स्ट्रिङको रूपमा फर्काउँछ।
  3. "ElectricCar" भनिने एउटा बाल वर्ग सिर्जना गर्नुहोस् जसले "कार" वर्गलाई विस्तार गर्दछ र "ब्याट्रीलाइफ" र यो मान सेट गर्ने कन्स्ट्रक्टरको लागि अतिरिक्त सम्पत्ति छ।
  4. "ElectricCar" वर्गमा "getBatteryLife" भनिने विधि थप्नुहोस् जसले "batteryLife" गुणको मूल्य फर्काउँछ।
  5. "ElectricCar" वर्गको वस्तु सिर्जना गर्नुहोस् र कारको विवरण र ब्याट्री जीवन प्रदर्शन गर्न तपाईंले सिर्जना गर्नुभएको विधिहरू प्रयोग गर्नुहोस्।

जवाफहरू:

1.

class Car {
  public $make;
  public $model;
  public $year;

  function __construct($make, $model, $year) {
    $this->make = $make;
    $this->model = $model;
    $this->year = $year;
  }
}

2.

class Car {
  public $make;
  public $model;
  public $year;

  function __construct($make, $model, $year) {
    $this->make = $make;
    $this->model = $model;
    $this->year = $year;
  }
  function getDetails() {
    return $this->make . " " . $this->model . " " . $this->year;
  }
}

3.

class ElectricCar extends Car {
  public $batteryLife;

  function __construct($make, $model, $year, $batteryLife) {
    parent::__construct($make, $model, $year);
    $this->batteryLife = $batteryLife;
  }
}

4.

class ElectricCar extends Car {
  public $batteryLife;

  function __construct($make, $model, $year, $batteryLife) {
    parent::__construct($make, $model, $year);
    $this->batteryLife = $batteryLife;
  }
  function getBatteryLife() {
    return $this->batteryLife;
  }
}

5.

$electricCar = new ElectricCar("Tesla", "Model S", 2022, 300);
echo $electricCar->getDetails();
echo "<br>";
echo "Battery Life: " . $electricCar->getBatteryLife();
PHP मा OOP: एक शुरुआती गाइड
PHP मा परिमार्जकहरू पहुँच गर्नुहोस्
en English
X
माथि स्क्रोल गर्नुहोस्