
PHP Object – Class Functions – PHP हमें बहुत सारे Objects व Class से Related Functions Provide करता है, जिनका प्रयोग करके हम हमारी विभिन्न प्रकार की जरूरतों को बडी ही आसानी से पूरा करने में सक्षम हो पाते हैं। यदि PHP हमें ये Functions Provide न करता, तो हमें हमारी जरूरतों को पूरा करने के लिए ये Functions स्वयं अपने स्तर पर बनाने पडते। ये Functions बहुत ही महत्वपूर्ण हैं, इसलिए इन्हें अच्छी तरह से समझना बहुत जरूरी है।
PHP Object – Class Functions
तो चलिए, अब हम PHP द्वारा प्रदान किए गए Object व Class से संबंधित Functions को समझते हैं, ताकि हम हमारा Development ज्यादा तेज गति से कर सकें।
class_exists() Function
ये Function एक Boolean Value Return करता है जो इस बात को Indicate करता है कि Current PHP Script में Function के पहले Argument के रूप में Specify की गई Class Exist है या नहीं है।
ये Function Argument के रूप में दो Parameters Accept करता है। पहले Parameter के रूप में हमें उस Class का नाम String के रूप में Specify करना होता है, जिसे हम Check करना चाहते हैं कि वह Current PHP Script में Exist है या नहीं।
जबकि दूसरे Argument के रूप में हम true या false के रूप में एक Boolean मान Specify कर सकते हैं, जो इस बात का Indication होता है कि हम जिस Class को Check कर रहे हैं, यदि वह Class Current Script में Available नहीं है, तो __autoload() magic Method का प्रयोग करके उसे Current Script में Include करना है या नहीं।
By Default रूप से दूसरा Argument true रहता है, जो इस बात को Specify करता है कि यदि Check की जा रही Class Current Script में Exist न हो, तो __autoload() Magic Method उस Class को Current Script में Embed कर ले।
लेकिन यदि हम नहीं चाहते कि पहले Argument के रूप में Specify की गई Class Automatically Current Script में Include हो जाए, तो इस दूसरे Argument में हमें false मान Specify करना होता है।
मानलो कि हम उसी स्थिति में किसी Class का Object Create करना चाहते हैं, जबकि उस Object से संबंधित Class Script में Exist हो। इस जरूरत को पूरा करने के लिए हम इस Function को निम्नानुसार उपयोग में ले सकते हैं:
<?php // Check that the class exists before trying to use it if (class_exists('Rectangle')) { $rect = new Rectangle(); $rect->input(12,22); $rect->display(); } else{ echo "Class Not Exist."; } ?>
चूंकि जैसाकि उपरोक्त Script में हम देख सकते हैं कि “Rectangle” नाम की Class Current Script में Exist नहीं है, इसलिए उपरोक्त Program का Output निम्नानुसार ही प्राप्त होना हैः
//Output
Class Not Exist.
लेकिन अब मानलो कि हम चाहते हैं कि यदि Class Exist न हो, तो वह Class Automatically Current Script में Include हो जाए, ताकि हम Class का Object Create कर सकें। इस जरूरत को पूरा करने के लिए हम class_exists() Function को निम्नानुसार उपयोग में ले सकते हैं:
<?php function __autoload($class) { include($class . '.inc.php'); // Check to see whether the include declared the class if (!class_exists($class, false)) { trigger_error("Unable to load class: $class", E_USER_WARNING); } } if (class_exists('Rectangle')) { $rect = new Rectangle(); $rect->input(12,22); $rect->display(); } ?> //Output Area of Rectangle : 264
इस Program में सबसे पहले if Statement ये Check करता है कि “Rectangle” नाम की Class Current Script में Included है या नहीं। चूंकि हमने Current Script में इस Class को Include नहीं किया है न ही इस Class को Current Script में Define किया है।
परिणामस्वरूप class_exists() Function Automatically __autoload() Method को Invoke कर देता है क्योंकि By Default रूप से इस Function के दूसरे Argument का मान true रहता है, जो PHP के लिए इस बात को Indication होता है कि यदि Current Script में Class Exist न हो, तो __autoload() Magic Method को Execute कर दिया जाए।
इस तरह से PHP Control __autoload() Method में पहुंचता है, जहां वह Rectangle.inc.php नाम की PHP File को Current Script में Include करता है। इस File को Include करने के बाद फिर से ये Check करता है कि क्या Rectangle नाम की Class Current Script में Exist है या नहीं।
चूंकि Rectangle.inc.php नाम की जो File हमने __autoload() Method द्वारा Current Script में Include की है, हो सकता है उस File में Rectangle नाम की Class न हो। इसलिए इस __autoload() Magic Method में इस Class को फिर से Check किया गया है।
यदि अभी भी Rectangle नाम की Class Current Script में Exist न हो, तो निम्न class_exists() Function False Return करता है, जिसे NOT (!) Operator True में Convert कर देता है।
if (!class_exists($class, false)) {
परिणामस्वरूप if Statement True हो जाता है और PHP Control if Statement के Block में Enter करके एक Error Trigger करने के लिए निम्न Code Fire करता हैः
trigger_error(“Unable to load class: $class”, E_USER_WARNING);
get_class() Function
जब हम किसी Object की Class का नाम जानना चाहते हैं, तब हम इस Function को Use करते हैं। ये Function Argument के रूप में एक Object को Accept करता है और Output के रूप में उस Object की Class का नाम एक String के रूप में Return करता है।
यदि इस Function में कोई Argument Pass न किया जाए अथवा यदि इस Function में Object के अलावा किसी अन्य Data Type के मान को Pass किया जाए, तो ये Function False Return करता है। इस Function को हम निम्नानुसार Use कर सकते हैं:
<?php class Time{ private $hour, $minutes; public function __construct($hour=12, $minutes=0){ $this->hour = $hour; $this->minutes = $minutes; } } class NewTime extends Time{ private $seconds; public function __construct($h, $m, $s){ parent::__construct($h, $m); $this->seconds = $s; } } $hmt = new Time(3,50); echo "HMT is Object of ". get_class($hmt) . " Class. \n"; $sonata = new NewTime(13,10,20); echo "Sonata is Object of " . get_class($sonata) . " Class. \n"; ?> // Output HMT is Object of Time Class. Sonata is Object of NewTime Class.
जैसाकि उपरोक्त Program के Output में हम देख सकते हैं कि हमने जिस Class का Object Create किया है, ये Function उसी Class का नाम Return कर रहा है।
जब हम इस Function को Class के अन्दर किसी Method में Use करते हैं और इसमें किसी Object को Parameter के रूप में Pass नहीं करते, तो ये Method उसी Class का नाम Return करता है, जिस Class में इस Function को Use किया गया होता है। जैसेः
<?php class Time{ private $hour, $minutes; public function __construct($hour=12, $minutes=0){ echo "This is Object of " . get_class() . " Class. \n"; } } new Time(3,50); ?>
इस Program के Constructor में ही हमने get_class() Function को Call कर लिया है। लेकिन हमने इस Function में किसी Parameter को Pass नहीं किया है। परिणामस्वरूप ये Function Current Class के नाम को ही Return कर रहा है।
इस Program में हमने Time Class के Object को एक अलग तरीके से Create किया है। जब हम किसी Object का Reference किसी Variable में Store करना नहीं चाहते, तब हम इस तरह से Object Create कर सकते हैं। ये एक प्रकार का Anonymous Object है, जिसका कोई नाम नहीं है। इसलिए इस Object को पूरे Program में केवल एक ही बार उपयोग में लिया जा सकता है।
सामान्यतः जब हम किसी Function में किसी Class का नया Object Create करते ही उसी Parameter के रूप में Pass करना चाहते हैं, तब हम इस तरह से Object Create करते हैं।
get_class_methods() Function
ये Function Argument के रूप में एक Class अथवा किसी Class के Object का नाम लेता है और जिस Class या जिस Class के Object का नाम Argument के रूप में Accept करता है, उस Class के सभी Methods के नामों का एक Array Return करता है। यदि इस Function के Execution के दौरान कोई Error Trigger होता है, तो Error Message के साथ ये Function NULL Return करता है।
<?php class Time{ private $hour, $minutes; public function __construct($hour=12, $minutes=0){ $this->hour = $hour; $this->minutes = $minutes; } public function __toString(){ return $this->hour. ":" .$this->minutes; } public static function __set_state($asArray){ echo $asArray['hour'] . ':' . $asArray['minutes']; } } class NewTime extends Time{ private $seconds; public function __construct($h, $m, $s){ parent::__construct($h, $m); $this->seconds = $s; } } $hmt = new Time(3,50); $sonata = new NewTime(13,10,20); print_r(get_class_methods('Time')); print_r(get_class_methods('NewTime')); print_r(get_class_methods($hmt)); ?> //Output Array ( [0] => __construct [1] => __toString [2] => __set_state ) Array ( [0] => __construct [1] => __toString [2] => __set_state ) Array ( [0] => __construct [1] => __toString [2] => __set_state )
जैसाकि उपरोक्त Program के Output को देखकर हम समझ सकते हैं कि ये get_class_methods() Function किस तरह से Time Class व NewTime Class के सभी Methods के नामों को Return कर रहा है।
हालांकि हमने NewTime नाम की Derived Class में केवल एक Constructor को ही Define किया है, लेकिन जैसाकि हमने पहले भी कहा है कि Base Class के सभी Public Methods Derived Class में भी Available होते हैं, इसीलिए NewTime Class में हमें __toSting() व __set_state() Methods भी प्राप्त हो रहे हैं।
हम इस Function में यदि किसी Class का Object भी Parameter के रूप में Pass कर देते हैं, तो ये Function उस Object की Class के सभी Methods को Return कर देता है, जैसाकि उपरोक्त Program के तीसरे Output से समझा जा सकता है।
get_class_vars() Function
ये Function भी Argument के रूप में एक Class का नाम लेता है और जिस Class का नाम Argument के रूप में Accept करता है, उस Class के सभी Data Members के नामों का एक Associative Array Return करता है, जिसमें सभी Data Members के नाम Keys की तरह तथा सभी Data Members के मान Values की तरह Represent होते हैं।
ये Function केवल उन्हीं Data Members को Return करता है, जो Current Context यानी Current Scope में Accessible होते हैं। यदि इस Function के Execution के दौरान कोई Error Trigger होता है, तो Error Message के साथ ये Function NULL Return करता है।
<?php class Time{ private $hour; protected $minutes; public $seconds; public function __construct($hour=12, $minutes=0){ $this->hour = $hour; $this->minutes = $minutes; } public static function allVars(){ print_r(get_class_vars(__CLASS__)); } } $hmt = new Time(3,50); Time::allVars(); print_r(get_class_vars('Time')); ?> //Output Array ( [hour] => [minutes] => [seconds] => ) Array ( [seconds] => )
उपरोक्त Program में हमने get_class_vars() Function को दो तरीकों से Specify किया है। पहले तरीके में हमने एक allVars() नाम का static Function Create किया है, ताकि हम Class के सभी Data Members को Class के बाहर Directly allVars() Method का प्रयोग करते हुए Access कर सकें।
चूंकि Static Method Class के सभी Members को Directly Access करने में सक्षम है, परिणामस्वरूप Class के तीनों ही Data Members यानी Hour, Minutes व seconds तीनों ही पहले array में return हो रहे हैं।
जबकि दूसरे Array में केवल Seconds ही Return हो रहे हैं क्योंकि उपरोक्त Time Class में केवल Seconds ही एक ऐसा Data Member है जो ब्सें के बाहर Public Scope में Available है।
get_declared_classes() Function
ये Function कोई Argument Accept नहीं करता लेकिन Current Script में Define की गई सभी Classes के नामों के साथ उन सभी Classes के नामों को भी एक Array के रूप में Return करता है, जिन्हें PHP में पहले से Define किया गया है। सामान्यतः PHP की पहले से बनी हुई Classes इस Array में पहले दिखाई देती हैं जबकि हमारी बनाई हुई Classes इस Array के अन्त में दिखाई देती हैं। इस थ्नदबजपवद को हम हमारी ैबतपचज में कहीं भी निम्नानुसार ब्ंसस कर सकते हैं:
print_r(get_declared_classes());
get_object_vars() Function
ये Function Argument के रूप में किसी Class के किसी Object का नाम लेता है और जिस Object को Argument के रूप में Accept करता है, उस Class के सभी Data Members के नामों का एक Associative Array Return करता है, जिसमें सभी Data Members के नाम Keys की तरह तथा सभी Data Members के मान Values की तरह Represent होते हैं।
ये Function केवल उन्हीं Non-Static Data Members को ही Return करता है, जो कि Current Context यानी Current Scope में Accessible होते हैं। यदि इस Function के Execution के दौरान कोई Error Trigger होता है, तो Error Message के साथ ये Function NULL Return करता है।
<?php class Time{ public $hour; protected $minutes; private $seconds; public function __construct($hour=12, $minutes=0){ $this->hour = $hour; $this->minutes = $minutes; } } $hmt = new Time(3,50); print_r(get_object_vars($hmt)); ?> //Output Array ( [hour] => 3 )
जैसाकि उपरोक्त Program के Output से हम समझ सकते हैं कि हालांकि हमने get_object_vars() Function में Argument के रूप में $hmt Object Pass किया है, लेकिन ये Function $hmt Time Object की केवल “hour” Property को ही Return कर रहा है, क्योंकि द्रोष दोनों Properties Class से बाहर Directly Accessible नहीं हैं।
जबकि यदि हम किसी Method को Class के अन्दर Define करें और उस Method में इस Function को $this Object को Parameter के रूप में Accept करते हुए Call करें, तो हम Object की सभी Properties को Output में Return कर सकते हैं। जैसेः
<?php class Time{ public $hour; protected $minutes; private $seconds; public function __construct($hour=12, $minutes=0){ $this->hour = $hour; $this->minutes = $minutes; } public function allProperties(){ return get_object_vars($this); } } $hmt = new Time(3,50); print_r($hmt->allProperties()); ?> //Output Array ( [hour] => 3 [minutes] => 50 [seconds] => )
get_parent_class() Function
ये Function Argument के रूप में एक Class अथवा किसी Class के Object का नाम लेता है और जिस Class या जिस Class के Object का नाम Argument के रूप में Accept करता है, उस Class की Parent Class के नाम को एक String के रूप में Return करता है। यदि इस Function को किसी एसे Object या Class के साथ Use किया जाए, जिसकी कोई Parent Class न हो, तो ये Function False Return करता है। इस Function को हम निम्नानुसार उपयोग में ले सकते हैं:
<?php class Time{ private $hour, $minutes; public function __construct($hour=12, $minutes=0){ $this->hour = $hour; $this->minutes = $minutes; } } class NewTime extends Time{ public $seconds; public function __construct($h, $m, $s){ parent::__construct($h, $m); $this->seconds = $s; } } $hmt = new Time(3,50); $sonata = new NewTime(13,10,20); echo "NewTime Class is Child of " . get_parent_class(NewTime) . " Class\n"; echo "\$sonata is Child of " . get_parent_class($sonata) . " Class\n"; ?> //Output NewTime Class is Child of Time Class $sonata is Child of Time Class
उपरोक्त Program का Output देखकर हम समझ सकते हैं कि किस तरह से ये Function Argument के रूप में आने वाले Object अथवा Class की Parent Class के नाम को Return करता है।
जब हम इस Function में किसी ऐसी Class का नाम Specify करते हैं, जिसकी कोई Child Class नहीं होती या हम किसी Base Class के Object का नाम Argument के रूप में इस Function में Parameter के रूप में Pass करते हैं, तो ये Function False Return करता है, परिणामस्वरूप इस स्थिति में Output में कुछ भी Display नहीं होता।
interface_exists() Function
ये Function Exactly class_exists() Function की तरह ही दो Arguments लेता है और एक Boolean Type की Value Return करता है, जो इस बात का Indication होता है कि Function के पहले Argument के रूप में Specified Interface Current Script में Exist है या नहीं।
यदि Interface Exist न हो, तो हम class_exists() Function की तरह ही __autoload() Magic Method को Define कर सकते हैं व Interface की Class को Current Script में Include कर सकते हैं। इस Function को हम निम्नानुसार उपयोग में ले सकते हैं:
<?php // Check the interface exists before trying to use it if (interface_exists('MyInterface')) { class MyClass implements MyInterface { // Methods } } ?>
is_a() Function
ये Function तीन Parameters Accept करता है और Boolean Type की एक Value Return करता है। पहला Argument एक Object होता है, जबकि दूसरे Argument के रूप में हमें Class का नाम एक String के रूप में Specify करना होता है। इस Function द्वारा हम यही Check करते हैं कि क्या पहले Argument के रूप में Specify किया गया Object दूसरे Argument के रूप में Specify की गई Class का Object है या नहीं।
यदि पहले Argument में Specified Object दूसरे Argument के रूप में Specify की गई Class का ही Object होता है, तो ये Function True Return करता है अन्यथा False Return करता है।
इस Function का तीसरा Parameter एक Optional Parameter होता है जिसका Default मान False होता है। यदि हम इसमें True Specify कर दें, तो Comparision के दौरान यदि दूसरे Argument में Specify की गई Class Current Script में Defined न हो, तो __autoload() Method Invoke हो जाता है और Second Parameter में Specified Class को Current Script में Include करने की कोशिश करता है। हम इस Function को निम्नानुसार उपयोग में ले सकते हैं:
<?php class Time{ private $hour, $minutes; public function __construct($hour=12, $minutes=0){ $this->hour = $hour; $this->minutes = $minutes; } } $hmt = new Time(3,50); if(is_a($hmt, 'Time')){ Echo "\$hmt is an Object of Time Class."; } else{ Echo "\$hmt is not an Object of Time Class."; } ?> // Output $hmt is an Object of Time Class.
जैसाकि हम उपरोक्त Code में देख सकते हैं कि $hmt, Time Class का ही Object है, इसलिए is_a() Function True Return करता है, परिणामस्वरूप if Statement True हो जाता है और उपरोक्तानुसार Output प्राप्त होता है।
हम इस Function के स्थान पर instanceof Operator का भी प्रयोग कर सकते हैं। इस Operator के बारे में हम आगे जानेंगे।
is_subclass_of() Function
ये Function तीन Parameters Accept करता है और Boolean Type की एक Value Return करता है। पहला Argument एक Object या Sub-Class Name होता है, जबकि दूसरे Argument के रूप में हमें Super Class का नाम एक String के रूप में Specify करना होता है।
इस Function द्वारा हम यही Check करते हैं कि क्या पहले Argument के रूप में Specify किया गया Object या Class दूसरे Argument के रूप में Specify की गई Class की Sub-Class या Sub-Class का Object है या नहीं।
यदि पहले Argument में Specified Object या Class दूसरे Argument के रूप में Specify की गई Class का ही Sub-Class या Object होता है, तो ये Function True Return करता है अन्यथा False Return करता है।
इस Function का तीसरा Parameter एक Optional Parameter होता है जिसका Default मान False होता है। यदि हम इसमें True Specify कर दें, तो Comparision के दौरान यदि पहले व दूसरे Argument में Specify की गई Classes, Current Script में Defined न हो, तो __autoload() Method Invoke हो जाता है और पहले व दूसरे Parameter में Specified Classes को Current Script में Include करने की कोशिश करता है। हम इस Function को निम्नानुसार उपयोग में ले सकते हैं:
<?php class Time{ private $hour, $minutes; public function __construct($hour=12, $minutes=0){ $this->hour = $hour; $this->minutes = $minutes; } } class NewTime extends Time{ public $seconds; public function __construct($h, $m, $s){ parent::__construct($h, $m); $this->seconds = $s; } } $hmt = new NewTime(3,50,10); if(is_subclass_of(NewTime, Time)){ Echo "NewTime is a SubClass of Time Class.\n"; } if(is_subclass_of('NewTime', 'Time')){ Echo "NewTime is a SubClass of Time Class.\n"; } if(is_subclass_of($hmt, Time)){ Echo "\$hmt is an Object of a SubClass of Time Class.\n"; } ?> // Output NewTime is a SubClass of Time Class. NewTime is a SubClass of Time Class. $hmt is an Object of a SubClass of Time Class.
method_exists() Function
ये Function दो Arguments को Parameter के रूप में Accept करता है और Output के रूप में True या False Return करता है। पहले Argument के रूप में हमें किसी Object या Class के नाम को Specify करना होता है, जबकि दूसरे Argument के रूप में हमें उस Method का नाम Specify करना होता है, जिसके बारे में हम ये जानना चाहते हैं कि उस नाम का Method पहले Argument में Specified Class या Object में Exist है या नहीं।
यदि दूसरे Argument के रूप में Specified Method, पहले Argument के रूप में Specified Class या Object में Exist हो, तो ये Function True Return करता है अन्यथा False Return करता है। इस Function को हम निम्नानुसार उपयोग में ले सकते हैं:
<?php class Time{ private $hour, $minutes; public function __construct($hour=12, $minutes=0){ $this->hour = $hour; $this->minutes = $minutes; } } $sonata = new Time(); if(method_exists(Time, '__construct')){ Echo "Specified Method Exist in the Class.\n"; } if(method_exists($sonata, '__construct')){ Echo "Specified Method Exist in the Class of \$sonata Object.\n"; } ?> // Output Specified Method Exist in the Class. Specified Method Exist in the Class of $sonata Object.
इस Program में हम ये जानना चाहते थे कि __construct() नाम का Method Time Class में या जिस Class का $sonata Object है, उस Class में Exist है या नहीं और Output देखकर आप समझ ही सकते हैं कि इस Function ने किस तरह से काम किया है।
class_alias() Function
ये Function दो Arguments Accept करता है। पहला Argument Original Class का String Formatted नाम होता है, जबकि दूसरा Argument String Formatted Alias होता है। इस Function का प्रयोग करके हम किसी एक Class का दूसरा नाम Assign कर देते हैं जिससे किसी एक Class को एक दूसरे नाम से भी Refer कर सकते हैं।
यदि ये Function Successful होता है तो True Return करता है अन्यथा False Return करता है। इस Function को हम निम्नानुसार उपयोग में ले सकते हैं:
<?php class Time{ private $hour, $minutes; public function __construct($hour=12, $minutes=0){ $this->hour = $hour; $this->minutes = $minutes; } } class_alias('Time', 'MyTime'); $sonata = new Time; $hmt = new MyTime; if($sonata instanceof MyTime AND $hmt instanceof Time){ Echo "Both Objects are from Same Class."; } ?>
इस Program में हमने Time Class का ही एक नया Alias MyTime Create किया है और दोनों के एक-एक Object बनाए हैं। फिर दोनों Objects को इस बात के लिए if Statement द्वारा Check किया है कि $sonata, MyTime Class का तथा $hmt, Time Class का Instance है या नहीं।
चूंकि Time व MyTime दोनों एक ही Class के दो नाम हैं, इसलिए if Statement में $hmt को Time Class से व $sonata को MyTime Class से Compare करने पर भी हमारा if Statement True Return करता है क्योंकि Time व MyTime दो अलग Classes नहीं बल्कि एक ही Class के दो नाम हैं। इसलिए उपरोक्त Program में Specify की गई if Condition True होती है और हमें उपरोक्त Output प्राप्त होता है।
get_called_class() Function
ये Function कोई Argument नहीं लेता लेकिन Return Value के रूप में उस Class का नाम Return करता है, जिसका Method Call हुआ है। ये Function Late Static Binding की Class का नाम Return करता है क्योंकि Late Static Binding में जिस Class के लिए किसी Static Method को Call किया जाता है, उसी Class के Scope में Method Call होता है, जबकि Static Binding में Static Method हमेंशा Base Class के Context में Method Call होता है। इस Method को हम निम्नानुसार उपयोग में ले सकते हैं:
<?php class Time { public static function test() { echo get_called_class() . "\n"; } } class NewTime extends Time { } Time::test(); NewTime::test(); ?> // Output Time NewTime
get_declared_interfaces() Function
ये Function कोई Argument Accept नहीं करता लेकिन Current Script में Define किए गए सभी Interfaces के नामों के साथ उन सभी Interfaces के नामों को भी एक Array के रूप में Return करता है, जिन्हें PHP में पहले से Define किया गया है।
सामान्यतः PHP की पहले से बने हुए Interfaces इस Array में पहले दिखाई देते हैं जबकि हमारे बनाए हुए Interfaces इस Array के अन्त में दिखाई देते हैं। इस Function को हम हमारी Script में कहीं भी निम्नानुसार Call कर सकते हैं:
<?php print_r(get_declared_interfaces()); ?>
ये Statement हमें निम्नानुसार Output देता है, जबकि PHP के Version के आधार पर आपको दिखाई देने वाला Result भिन्न हो सकता हैः
//Output Array ( [0] => Traversable [1] => IteratorAggregate [2] => Iterator [3] => ArrayAccess [4] => Serializable [5] => JsonSerializable [6] => RecursiveIterator [7] => OuterIterator [8] => Countable [9] => SeekableIterator [10] => SplObserver [11] => SplSubject [12] => Reflector [13] => SessionHandlerInterface )
get_declared_traits() Function
ये Function कोई Argument Accept नहीं करता लेकिन Current Script में Define किए गए सभी Traits के नामों को एक Array के रूप में Return करता है। इस Function को हम हमारी Script में कहीं भी निम्नानुसार Call कर सकते हैं:
<?php trait Set{ } trait Get{ } print_r(get_declared_traits()); ?> //Output ( [0] => Set [1] => Get )
जैसाकि हम हमारे इस Demo Program में देख सकते हैं कि हमने केवल दो Traits Declare किए हैं, इसलिए ये Function Output के रूप में केवल उन्हीं दोनों Traits के नाम Return कर रहा हैं।
property_exists() Function
ये Function दो Arguments Accept करता है। पहला Argument एक Object या Class का नाम होता है, जबकि दूसरे Argument के रूप में हमें उस Property के नाम को एक String के रूप में Specify करना होता है, जिसे हम पहले Argument में Specified Object या Class में Existence के लिए Check करना चाहते हैं।
यदि दूसरे Argument के रूप में Specified Property, पहले Argument में Specified Object या Class में Exist हो, तो ये Function True Return करता है, अन्यथा False Return करता है।
इस Function से मिलता जुलता एक Function isset() है, जो Argument के रूप में Specified Property के Exist होने पर True अन्यथा False Return करता है। लेकिन इन दोनों Functions में एक मूल अन्तर ये है कि यदि Property में Value के रूप में NULL हो, तो isset() Function False Return करता, जबकि property_exist() Function True Return करता है।
यदि ये Function किसी कारण से Execute न हो सके या Fail हो जाए, तो उस स्थिति में NULL Return करता है।
यदि पहले Argument के रूप में Specify की गई Class या Object की Class Current Script में Available न हो, तो ये Function Automatically Autoloaders को Execute करके पहले Argument में Specify की गई Class या Object की Class को Current Script में Include करने की कोशिश करता है।
__get() Magic Method द्वारा Accessible Properties को ये Function Access करने में सक्षम नहीं होता, इसलिए __get() Magic Method की Properties के Existence के संदर्भ में ये Function कोई सही जवाब नहीं देता। इस Function को हम निम्नानुसार उपयोग में ले सकते हैं:
<?php class Time { private $hour, $minutes, $seconds; public static function test() { echo get_called_class(); } } $sonata = new Time; if(property_exists($sonata, 'hour')){ Echo "\$hour Property is exist in Time Class. \n"; } if(property_exists(Time, 'minutes')){ Echo "\$minutes Property is exist in Time Class. \n"; } if(property_exists('Time', 'seconds')){ Echo "\$minutes Property is exist in Time Class. \n"; } ?> // Output $hour Property is exist in Time Class. $minutes Property is exist in Time Class. $minutes Property is exist in Time Class.
trait_exists() Function
ये Function Exactly class_exists() Function की तरह ही दो Arguments लेता है और एक Boolean Type की Value Return करता है, जो इस बात का Indication होता है कि Function के पहले Argument के रूप में Specified Trait Current Script में Exist है या नहीं।
यदि Trait Exist न हो, तो हम class_exists() Function की तरह ही __autoload() Magic Method को Define कर सकते हैं व Trait की File को Current Script में Include कर सकते हैं। इस Function को हम निम्नानुसार उपयोग में ले सकते हैं:
<?php // Check the interface exists before trying to use it if (trait_exists('GeneralMethods')) { // Do something here… } ?>
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF