परिचय
जैसा कि नाम से पता चलता है, अनाम वर्ग वह है जिसका नाम नहीं है। यह एक बार उपयोग के लिए है, और यदि किसी को मक्खी पर एक वर्ग को परिभाषित करने की आवश्यकता है। अनाम वर्ग की सुविधा PHP 7 संस्करण के बाद से पेश की गई है।
अनाम वर्ग की परिभाषा एक अभिव्यक्ति के अंदर निहित है जिसका परिणाम उस वर्ग की वस्तु है। इसे नए वर्ग . के साथ परिभाषित किया गया है सिंटैक्स निम्नानुसार है
सिंटैक्स
<?php $obj=new class { public function sayhello(){ echo "Hello World"; } }; $obj->sayhello(); ?>
बेनामी वर्ग वह सब कुछ कर सकता है जो एक सामान्य कर सकता है यानी दूसरे वर्ग का विस्तार कर सकता है, इंटरफ़ेस लागू कर सकता है या विशेषता का उपयोग कर सकता है
निम्नलिखित कोड में, एक अनाम वर्ग पेरेंटक्लास का विस्तार करता है और पेरेंटइंटरफेस लागू करता है
उदाहरण
<?php class parentclass{ public function test1(){ echo "test1 method in parent class\n"; } } interface parentinterface{ public function test2(); } $obj=new class() extends parentclass implements parentinterface { public function test2(){ echo "implements test2 method from interface"; } }; $obj->test1(); $obj->test2(); ?>
आउटपुट
आउटपुट नीचे जैसा है -
test1 method in parent class implements test2 method from interface
नेस्टेड अनाम वर्ग
बेनामी क्लास को अन्य क्लास मेथड के बॉडी के अंदर नेस्ट किया जा सकता है। हालांकि, इसके ऑब्जेक्ट की बाहरी वर्ग के निजी या संरक्षित सदस्यों तक पहुंच नहीं है
उदाहरण
<?php class testclass{ public function test1(){ return new class(){ public function test2(){ echo "test2 method of nested anonymous class"; } }; } } $obj2=new testclass(); $obj2->test1()->test2(); ?>
आउटपुट
उपरोक्त कोड निम्नलिखित परिणाम उत्पन्न करता है -
test2 method of nested anonymous class
अनाम वर्ग का आंतरिक नाम
PHP पार्सर आंतरिक उपयोग के लिए अनाम वर्ग को एक अनूठा नाम देता है
उदाहरण
<?php var_dump(get_class(new class() {} )); ?>
आउटपुट
यह निम्न के समान आउटपुट देगा -
string(60) "class@anonymous/home/cg/root/1569997/main.php0x7f1ba68da026"