PHP Destructor | Constructor in PHP

Constructor in PHP

Constructor in PHP – कोई भी Object ऐसा नहीं होता, जिसके Creation के समय उसकी किसी Property में कोई Value Assigned न हो। यानी जब हम किसी Object को Create करते हैं, तब उस Object के विभिन्न Data Members में किसी न किसी तरह का कोई न कोई मान जरूर Initialized रहता है। यदि किसी Object के Creation के समय उसमें कोई मान Initialized न हो, तो हमें किसी Method को Call करके उस Object को Initialize करना पडता है।

विभिन्न अन्य Programming Languages की तरह ही PHP में भी हम एक ऐसा Method Create कर सकते हैं, जो कि Object के Creation के समय ही उसे Basic मानों से Initialize कर दे।

PHP में Constructor एक ऐसा Method होता है, जिसे __constructor() नाम से Identify किया जाता है। पिछले Program में हमने $user Object के नाम व ईमेल एडरस को Object में Initialize करने के लिए setData() Method Create किया था।

जब हम Constructor Create करते हैं, तब Object के Data को Initialize करने के लिए हमें अलग से setData() जैसे किसी Method को Create व Call करने की जरूरत नहीं रहती है। Constructor का प्रयोग करते हुए हम हमारे पिछले Program को निम्नानुसार Re-Modify कर सकते हैं:

<?php
	class UserRegistration
	{
		function __construct($name, $email){
			$this->name = $name;
			$this->email = $email;
		}
		
		public function display(){
			echo "Username: ". $this->name . "\n";
			echo "Email: " . $this->email . "\n";
		}
	}
	
	$user = new UserRegistration('Kuldeep Mishra', 'bccfalna@gmail.com');
	$user->display();
?>

इस Program का Output Exactly वो ही है जो पिछले Program का Output था, जिसमें हमने setData() Method Create किया था।

Constructor एक ऐसा Method होता है, जिसे अलग से Call नहीं किया जा सकता। बल्कि ये Method उस समय Automatically Call हो जाता है, जब हम new Operator का प्रयोग करते हुए किसी Class का नया Object Create करते हैं। यानी उपरोक्त Program में जब निम्न Code Execute होता हैः

$user = new UserRegistration(‘Kuldeep Mishra’, ‘bccfalna@gmail.com’);

तब Automatically इस UserRegistration Class का Constructor Call हो जाता है।

हमें किसी Object के Create होते समय ही जिन कामों को पूरा करना होता है, उन्हें सामान्यतः Object के Constructor में Specify किया जाता है। उदाहरण के लिए यदि किसी Object के Create होते ही कोई File Open करनी हो, या कोई User Interface Create करना हो आदि, तो Object Creation के समय Automatically किए जाने वाले इन कामों को Constructor में ही लिखा जाता है।

किसी भी Constructor में हम किसी भी तरह के मान को Parameters के रूप में Pass कर सकते हैं, लेकिन कोई भी Constructor किसी तरह का कोई मान Return नहीं करता। इसलिए किसी Constructor Method से कभी किसी मान को Return नहीं करना चाहिए क्योंकि Constructor से कुछ भी Return करने का कोई मतलब नहीं होता।

यदि हम Constructor से कुछ मान Return भी करें, तो उस मान को प्राप्त करने के लिए हम किसी Object या Variable का Specify नहीं कर सकते, क्योंकि Constructor को हम अलग से Call ही नहीं कर सकते और जब हम किसी Constructor को अलग से Call ही नहीं कर सकते, तो उसके द्वारा Return किए जाने वाले मान को किसी अन्य Variable या Object में Accept कैसे करेंगे। इसलिए Constructor से कभी कोई मान Return नहीं करना चाहिए।

यानी सारांश के रूप में कहें, तो Constructor एक ऐसा Method होता है जो :

  • new Operator का प्रयोग करके Object Create करते समय Automatically Call हो जाता है।
  • अलग से किसी Object के साथ Call नहीं हो सकता।
  • Arguments तो Accept कर सकता है लेकिन किसी Value को Return नहीं कर सकता, क्योंकि Constructor से Return होने वाली Value को किसी भी अन्य Variable या Identifier में Store नहीं किया जा सकता, इसलिए Constructor से किसी Value को Return करने का कोई औचित्य नहीं होता।
  • Constructor किसी भी अन्य Class Methods या Functions को Call कर सकते हैं। यहां तक कि Inheritance के दौरान अपनी Parent Class के Constructor को भी Call कर सकते हैं, क्योंकि Constructor भी वास्तव में होते तो Functions ही हैं और Constructors Functions को Call कर सकते हैं।

PHP Destructor

PHP Destructor – Constructor की तरह ही Destructor भी एक ऐसा Method होता है, जो Automatically Call होता है और इसे अलग से Call नहीं किया जा सकता। अन्तर केवल इतना है कि जिस तरह से Construct Create करने के लिए __constructor() Method को Use किया जाता है उसी तरह से Destructor Create करने के लिए __destructor() Method को Use किया जाता है तथा Constructor किसी Object के Create होते समय Automatically Call होता है जबकि Destructor किसी Object के Destroy होते समय Automatically Call होता है।

यदि हम हमारे Program में स्वयं का Manual Destructor Create न करें, तब भी PHP स्वयं Script में Create होने वाले हर Object को Destroy कर देता है। फिर भी हम हमारी जरूरत के अनुसार जिन Resources को Constructor में Create करते हैं, उन्हें Destructors में Manually Destroy कर सकते हैं।

उदाहरण के लिए यदि हम किसी Program में किसी Object के Create होते समय Constructor द्वारा किसी File को Open करते हैं, तो उस File को Close करने का काम हमें उसी Object के Destructor में करना होता है।

यदि हम हमारे उपरोक्त Program को ही Modify करके उसमें कोई Destructor बनाना चाहें, तो हम हमारा Modified Program निम्नानुसार बना सकते हैं:

<?php
	class UserRegistration
	{
		function __construct($name, $email){
			$this->name = $name;
			$this->email = $email;
		}
		
		public function display(){
			echo "Username: ". $this->name . "\n";
			echo "Email: " . $this->email . "\n";
		}
		function __destruct($name, $email)
		{
			//Destructor Code Here.
		}
	}
	
	$user = new UserRegistration('Kuldeep Mishra', 'bccfalna@gmail.com');
	$user->display();
?>

उपरोक्त Program में हमने Destructor के लिए कोई भी Code नहीं लिखा है। लेकिन हम हमारी जरूरत के अनुसार जो भी Code लिखना चाहें, इस Destructor में लिख सकते हैं।

यानी सारांश के रूप में कहें, तो Destructor एक ऐसा Method होता है जो-

  • किसी Script का अन्त होते समय Automatically Call हो जाता है और Script में Create किए गए सभी Objects द्वारा Reserve की गई Memory को Release कर देता है।
  • अलग से किसी Object के साथ Call नहीं हो सकता।
  • Arguments तो Accept कर सकता है लेकिन किसी Value को Return नहीं कर सकता, क्योंकि Destructor तब Call होता है, जब Script पूरी तरह से समाप्त हो रही होती है। इसलिए Script के समाप्त हो जाने पर किसी Value के Return होने का कोई औचित्य नहीं होता।
  • Destructor किसी भी अन्य Class Methods या Functions को Call कर सकते हैं। यहां तक कि Inheritance के दौरान अपनी Parent Class के Destructor को भी Call कर सकते हैं, क्योंकि Destructor भी वास्तव में होते तो Functions ही हैं और Destructor Functions को Call कर सकते हैं।
PHP Variable Scope - Access Specifiers
PHP Static Variable

PHP in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

PHP in Hindi | Page: 647 | Format: PDF

BUY NOW GET DEMO REVIEWS