PHP - Access Modifiers
हम Access Modifier का उपयोग करते हैं class मोड और वेरिएबल्स के लिए एक्सेस की permissions सेट करने के लिए। Properties और methods को नियंत्रित करने के लिए, Access Modifier को उन properties और methods पर लागू किया जाता है जहां उन्हें एक्सेस किया जा सकता है।
Properties और methods में access modifiers हो सकते हैं जो नियंत्रित करते हैं कि उन्हें कहाँ access किया जा सकता है।
PHP में तीन access modifiers होते हैं public
, protected
और
private
.
Modifiers | Description |
---|---|
public | properties या methods को हर जगह से यानि की class के अंदर और बाहर दोनों से एक्सेस किया जा सकता है। यह default access modifiers होता है। |
protected | properties या methods को class के अन्दर और उस class के subclass द्वारा access किया जा सकता है। |
private | properties या methods को केवल class के अंदर ही access किया जा सकता है। |
The public Access Modifier
जब हम public कीवर्ड किसी भी property या method के आगे लगाते हैं तो वह property और method पब्लिक हो जाती है जिसका मतलब है कि अब हम उस प्रॉपर्टी ओर मेथड को कहीं से भी एक्सेस कर सकते हैं यानि की क्लास के अंदर या बाहर दोनों जगहों से।
public Access Modifier का इस्तेमाल हम नीचे एक उदाहरण से समझेंगे
<?php
class Books{
// Pubic Properties
public $title;
public $price;
public $author;
// Public Methods
public function getTitle(){
return $this->title;
}
}
// class के बाहर से class की property को एक्सेस करना
$maths = new Books();
$maths->title = 'Encyclopedias of Mathematics';
echo $maths->getTitle();
?>
Encyclopedias of Mathematics
The protected Access Modifier
<?php
// Parent Class
class Add{
// Protected Properties
protected $one = 50;
protected $two = 10;
protected function addition(){
echo "The sum is ", $this->one + $this->two, "<br>";
}
}
// Child class
// Add class के Protected Properties को Child class द्वारा access
class Sub extends Add{
function subtract(){
$this->addition();
echo "The difference is ", $this->one - $this->two;
}
}
$Obj = new Sub;
$Obj->subtract();
?>
The sum is 60
The difference is 40
ऊपर दिए गए उदाहरण में हमने Add नाम के एक क्लास बनाएं जिसमें हमारा 2 Protected Properties था $one और $two उसे हमने Add क्लास में भी इस्तेमाल किया और उस क्लास के बाहर चाइल्ड क्लास Sub में भी इस्तेमाल किया।
दूसरे क्लास के प्रॉपर्टी को सबक्लास द्वारा इस्तेमाल करने के बारे में PHP Inheritance चैप्टर में विस्तार से सीखेंगे
The private Access Modifier
किसी क्लास के properties और methods को उसी क्लास के बाहर से एक्सेस को रोकने के लिए private access modifier का उपयोग किया जाता हैं।
<?php
class Books{
// Private Properties
private $title;
public function getTitle(){
return $this->title;
}
}
/*class के बाहर से उस class की property
को एक्सेस करने की कोशिश*/
$maths = new Books();
$maths->title = 'Encyclopedias of Mathematics';
echo $maths->getTitle();
?>
Fatal error: Uncaught Error: Cannot access private property Books::$title
जैसा कि हमने ऊपर उदाहरण में देखा कि हम किसी भी प्राइवेट प्रॉपर्टी उस क्लास के बाहर से एक्सेस नहीं कर पा रहे है।
Private Access Modifier को क्लास के बाहर से इस्तेमाल करना
जैसा कि हमने देखा कि हम Private Access Modifier को क्लास के बाहर से इस्तेमाल नहीं कर सकते परंतु अगर हमें किसी कारणवश प्राइवेट प्रॉपर्टी को इस्तेमाल करना है तो इसके लिए हम दो पब्लिक मेथड getter और setter का इस्तेमाल कर सकते हैं जिसका हमने एक उदाहरण PHP Classes & Objects चैप्टर में देखा है तो चलिए इसे हम एक उदाहरण से समझते हैं।
<?php
class Books{
// Private Property
private $title;
// पब्लिक मेथड setter
public function setTitle($title){
$this->title = $title;
}
// पब्लिक मेथड getter
public function getTitle(){
return $this->title;
}
}
/*class के बाहर से उस class की property
को एक्सेस करने की कोशिश*/
$maths = new Books();
$maths->setTitle('Encyclopedias of Mathematics');
echo $maths->getTitle();
?>
Encyclopedias of Mathematics