PHP Constructor: The __construct() Function
एक PHP Constructor आपको ऑब्जेक्ट के निर्माण पर ऑब्जेक्ट के properties को initialize करने की अनुमति देता है।
अगर हम __construct()
फंक्शन क्रिएट करते हैं तो PHP उसे automatically कॉल कर देता है जैसे ही
हम उस क्लास के ऑब्जेक्ट को बनाते हैं।
नीचे हम एक उदाहरण देखेंगे जिसमें हम का construct फ़ंक्शन का इस्तेमाल नहीं करेंगे
<?php
// Class का निर्माण class Books{ // Properties public $title; public $author; public $price;
// Set Methods function setTitle($title){ $this->title = $title; } function setAuthor($author){ $this->author = $author; } function setPrice($price){ $this->price = $price; }
// Get Methods function getTitle(){ return $this->title; } function getAuthor(){ return $this->author; } function getPrice(){ return $this->price; } }
// Objects का निर्माण $maths = new Books(); $physics = new Books(); $finance = new Books();
// Objects 1 का title, author, price सेट करना $maths->setTitle('Encyclopedias of Mathematics'); $maths->setAuthor('James Stuart Tanton'); $maths->setPrice('Rs.9,393');
// Objects 2 का title, author, price सेट करना $physics->setTitle('Fundamentals of Physics'); $physics->setAuthor('David Halliday, Jearl Walker, and Robert Resnick'); $physics->setPrice('Rs.19,765');
// Objects 3 का title, author, price सेट करना $finance->setTitle('Rich Dad Poor Dad'); $finance->setAuthor('Robert T. Kiyosaki'); $finance->setPrice(260);
// Objects के itle, author, price को गेट करना echo $maths->getTitle() . "<br>" . $maths->getAuthor() . "<br>" . $maths->getPrice() . "<br><br>"; echo $physics->getTitle() . "<br>" . $physics->getAuthor() . "<br>" . $physics->getPrice() . "<br><br>"; echo $finance->getTitle() . "<br>" . $finance->getAuthor() . "<br>" . $finance->getPrice() . "<br><br>"; ?>
Encyclopedias of MathematicsJames Stuart TantonRs.9,393
Fundamentals of PhysicsDavid Halliday, Jearl Walker, and Robert ResnickRs.19,765
Rich Dad Poor DadRobert T. Kiyosaki260
ऊपर के उदाहरण में हमने तीन ऑब्जेक्ट को कॉल किया और तीनों ऑब्जेक्ट के लिए set Methods का इस्तेमाल करना पड़ा ऑब्जेक्ट के प्रॉपर्टीज को सेट करने के लिए जैसे कि setTitle, setTitle और setPrice.
अब यहां पर अगर हम __construct
फंक्शन का इस्तेमाल करते तो हमें set Methods को कॉल करने की
जरूरत नहीं पड़ती जिससे हमें कोड के बहुत सारे लाइन लिखने से बच सकते हैं जिससे हमारा काफी समय बचेगा।
ऊपर दिए गए उदाहरण को ही हम दोबारा से __construct
फंक्शन का इस्तेमाल करके बनाते हैं और फिर हम
दोनों उदाहरण के अंतर को साफ-साफ देख सकेंगे।
<?phpclass Books{ // Properties public $title; public $author; public $price;
// PHP Constructor function __construct($title, $author, $price){ $this->title = $title; $this->author = $author; $this->price = $price; }
// Get Method function getTitle() { return $this->title; } function getAuthor() { return $this->author; } function getPrice() { return $this->price; }}
// Objects का निर्माण$maths = new Books('Encyclopedias of Mathematics', 'James Stuart Tanton', 'Rs.9,393');$physics = new Books('Fundamentals of Physics', 'David Halliday, Jearl Walker, and Robert Resnick', 'Rs.19,765');$finance = new Books('Rich Dad Poor Dad', 'Robert T. Kiyosaki', 260);
// Objects के itle, author, price को गेट करनाecho $maths->getTitle() . "<br>" . $maths->getAuthor() . "<br>" . $maths->getPrice() . "<br><br>";echo $physics->getTitle() . "<br>" . $physics->getAuthor() . "<br>" . $physics->getPrice() . "<br><br>";echo $finance->getTitle() . "<br>" . $finance->getAuthor() . "<br>" . $finance->getPrice() . "<br><br>";?>
Encyclopedias of MathematicsJames Stuart TantonRs.9,393
Fundamentals of PhysicsDavid Halliday, Jearl Walker, and Robert ResnickRs.19,765
Rich Dad Poor DadRobert T. Kiyosaki260
ऊपर दिए गए दोनों उदाहरणों को देखकर आप समझ सकते हैं कि __construct
मेथड का इस्तेमाल करना
हमारे लिए कितना फायदेमंद है, ऊपर हमने केवल 3 ऑब्जेक्ट को ही कॉल किया था, मान लीजिए अगर आपको हजारों
ऑब्जेक्ट्स को कॉल करना हो तो कितने समय और कितने लाइंस ऑफ कोर्ट बचाया जा सकता है।
अब हमारे पास एक समस्या है मान लीजिए हमें किसी बुक का टाइटल तो पता है पर प्राइस नहीं पता तो अब स्थिति में हम क्या कर सकते हैं।
तो उसका बहुत ही सरल समाधान है अगर आप चाहते हैं कि किसी प्रॉपर्टी का वैल्यू नहीं भी डाला जाए तो भी हमें रिजल्ट प्रिंट हो, तो इसके लिए हम उस प्रॉपर्टी का डिफॉल्ट वैल्यू सेट करेंगे जो कि कुछ भी हो सकता है।
नीचे हम एक उदाहरण के माध्यम से देखते हैं।
<?phpclass Books{ // Properties public $title; public $price;
// PHP Constructor function __construct($title, $price = 0){ $this->title = $title; $this->price = $price; }
// Get Method function getTitle() { return $this->title; } function getPrice() { return $this->price; }}
// Objects का निर्माण$maths = new Books('Encyclopedias of Mathematics', 'Rs.9,393');$physics = new Books('Fundamentals of Physics', 'Rs.19,765');$finance = new Books('Rich Dad Poor Dad');
// Objects के itle, author, price को गेट करनाecho $maths->getTitle() . "<br>" . $maths->getPrice() . "<br><br>";echo $physics->getTitle() . "<br>" . $physics->getPrice() . "<br><br>";echo $finance->getTitle() . "<br>" . $finance->getPrice() . "<br><br>";?>
Encyclopedias of MathematicsRs.9,393
Fundamentals of PhysicsRs.19,765
Rich Dad Poor Dad0
ऊपर दिए गए उदाहरण में आप देखेंगे तो पाएंगे कि $finance ऑब्जेक्ट में हमने केवल Title पास किया है
और उसका Price नहीं डाला है इस स्थिति में Price के डिफॉल्ट वैल्यू जो कि हमने __construct
मेथड में 0 सेट किया है वह प्रिंट हो जाएगा।
Reference: https://www.php.net/manual/en/language.oop5.decon.php