PHP Type Hinting – PHP5 में Type Hinting का एक नया Concept Add किया गया है। इस Concept का प्रयोग करके हम किसी Function में Parameter के रूप में किसी Object को भी Pass करते समय इस बात को निश्चित कर लेते हैं, कि Function के Parameter के रूप में Pass किया जाने वाला Object किसी Specific Class का ही हो।
Type Hinting की सुविधा प्राप्त करने के लिए हमें किसी Object अथवा Array को Parameter के रूप में Pass करते समय से भी Specify करना होता है कि Parameter के रूप में Array Pass होगा या Object और यदि Object Pass होगा, तो कौनसी Class का Object Pass हो सकेगा। इसे समझने के लिए हम एक उदाहरण देखते हैं:
<?php class Time{ private $hour, $minutes; public function get($property){ return $this->$property; } public function __construct($h = 12, $m=0){ $this->hour = $h; $this->minutes = $m; } public function add(Time $late){ $this->hour += $late->hour; $this->minutes += $late->minutes; if($this->minutes > 59){ $this->hour = $this->hour + round($this->minutes / 60,0); $this->minutes = $this->minutes % 60; } if($this->hour > 23){ $this->hour = $this->hour - round($this->hour / 24,0) * 24; } return $this; } } $arrive = new Time(8,25); $late = new Time(12, 5); $dep = new Time(); $dep = $arrive->add($late); echo "Departure Time: ". $dep->get('hour') .":" . $dep->get('minutes'); ?> //Output Departure Time: 20:30
इस Program में हमने add() Method का Signature निम्नानुसार रखा हैः
public function add(Time $late){
हम देख सकते हैं कि इस Signature में Argument $late से Just पहले हमने Time Class को भी Specify किया है। इसे ही Type Hinting कहते हैं। जब PHP इस Program को Run करता है और यदि हम किसी कारणवश अथवा गलती से add() Method में Argument के रूप में Time Class के Object के अलावा किसी अन्य मान को Parameter के रूप में Specify कर दें, तो PHP हमें ऐसा नहीं करने देगा।
क्योंकि add() Method में हमने $late Argument के साथ Data Type Time को Specify करके PHP को बता दिया है कि Parameter के रूप में इस Method में केवल Time Class के Object को ही Pass किया जा सकता है।
यदि हम उपरोक्त Program में निम्नानुसार $dep Object की Line को Modify कर दें और Program को Run करें:
$dep = $arrive->add(10);
तो PHP हमें निम्नानुसार Fatal Error Message देता है, जो यही कह रहा है कि हम add() Method के First Argument के रूप में किसी Time Type के Object यानी Time Class के Instant को ही Pass कर सकते हैं, जबकि हमने इसमें Integer Type की Value Pass की है। परिणामस्वरूप हमें निम्नानुसार Error प्राप्त हो रही है।
Catchable fatal error: Argument 1 passed to Time::add() must be an instance of Time, integer given, called in C:\wamp\www\phpInHindi\001.php on line 32 and defined in C:\wamp\www\phpInHindi\001.php on line 13
इसी तरह से यदि हम $dep Object को निम्नानुसार Modify करके इसमें Parameter के रूप में NULL Specify कर दें:
$dep = $arrive->add(10);
तो भी हमें उपरोक्तानुसार Fatal Error ही प्राप्त होता है।
Type Hint के रूप में हम केवल किसी Class अथवा Array को ही Specify कर सकते हैं। यदि हम किसी Scalar Type को Type Hinting के रूप में Use करना चाहें, तो PHP हमें ऐसा नहीं करने देता।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF