protected Access Specifier

protected Access Specifier – OOPS के नियम के अनुसार हमें हमारे Object के Data को हमेंशा Private Scope में रखना चाहिए ताकि कोई भी Function या Script उस Data को Directly Access न कर सके बल्कि उस Data को Access करने के लिए हमें एक Well Defined Method Provide करना चाहिए, जो कि Public Scope में होना चाहिए।

हालांकि ये प्रक्रिया काफी उपयुक्त है, लेकिन फिर भी इस प्रक्रिया के कारण हम Derived Class में भी Base Class के Private Data को Directly Access करने में सक्षम नहीं हो पाते। इसलिए विभिन्न OOPS Based Programming Languages की तरह ही PHP में भी protected Access Specifier की सुविधा दी गई है।

Protected Scope वास्तव में Public Scope व Private Scope के बीच की स्थिति होती है। जब हम किसी Class में किसी Member को protected Declare करते हैं, तब हम उस Protected Member को Derived Class में तो Directly Access कर सकते हैं, लेकिन किसी अन्य Function या Script के लिए वे Protected Members पूरी तरह से Private यानी Hidden रहते हैं।

यदि हम हमारे पिछले Program में Box Class के विभिन्न Data Members Height, WidthLength को Protected Declare कर दें, तो Derived Class में इन Data Members को Directly Access किया जा सकता है।

परिणामस्वरूप हमें Derived Class में Base Class के get()set() Methods को Call करने की जरूरत नहीं रहेगी। हम हमारे पिछले Program को protected Access Specifies का प्रयोग करके निम्नानुसार Modify कर सकते हैं:

<?php
	//Super Class or Base Class
	class Box
	{
		protected $height, $width, $length;
		
		public function set($property, $value){
			$this->$property = $value;
		}

		public function display(){
			echo "\nHeight: ". $this->height;
			echo "\nWidth: " . $this->width ;
			echo "\nLength: " . $this->length ;
		}
	}
	
	//Subclass or Derived Class
	class NewBox extends Box{
		private $vol;
		
		public function volume(){
			$this->vol = $this->height * $this->width * $this->length;
			return $this->vol;
		}
		
		public function display(){
			parent::display();
			echo "\nVolume : ". $this->volume();
		}
	}

	$cpuCabinet = new NewBox();
	
	//Setting Values
	$cpuCabinet->set('height', 10);
	$cpuCabinet->set('width', 20);
	$cpuCabinet->set('length', 30);
	
	//Getting Values
	Echo "CPU Cabinet";
	$cpuCabinet->display();
?>

उपरोक्त Program में हमने Box Class के सभी Data Members को private के स्थान पर protected Access Specifier के साथ Declare कर दिया है, इसीलिए अब हम इन Data Members को NewBox Class के volume() Method में Directly Access कर पा रहे हैं, न कि पिछले Program की तरह हमें get() Method को Use करना पड रहा है।

जब हम Base Class के Data Members को Protected Define कर देते हैं, तब Base Class में Define किए गए get() Method की जरूरत समाप्त हो जाती है। इसीलिए उपरोक्त Code से हमने get() Method को Remove कर दिया है।

जिस तरह से हम Base Class के Data Members को Protected Scope के साथ Declare कर सकते हैं, उसी तरह से हम Base Class के उन Methods को भी Protected रख सकते हैं। जिन Methods को हम Protected रखते हैं, उन Methods को हम केवल Derived Class में ही Directly Access कर सकते हैं। अन्य Function या Script के लिए ये Methods भी Private यानी Hidden रहते हैं।

PHP Override Function
PHP Constructor Inheritance

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

PHP in Hindi | Page: 647 | Format: PDF

BUY NOW GET DEMO REVIEWS