PHP 7 स्केलर टाइप डिक्लेरेशन और रिटर्न टाइप डिक्लेरेशन में दो तरह के हिंटिंग का उपयोग करता है -
- कमजोर प्रकार के संकेत
- सख्त प्रकार के संकेत
कमजोर प्रकार के संकेत
डिफ़ॉल्ट रूप से, PHP 7 कमजोर प्रकार की जाँच मोड में काम करता है। कमजोर प्रकार की जाँच कोई त्रुटि या घातक त्रुटि नहीं देगी। जब एक प्रकार की घोषणा बेमेल होती है तो यह बिना किसी त्रुटि के कोड को निष्पादित करेगा।
सख्त_टाइप्सडेक्लेयर () का उपयोग करके, हम कमजोर प्रकार की जाँच को नियंत्रित कर सकते हैं।
declare(strict_types=0); //weak type-checking; we should set the strict value = 0
कमजोर प्रकार का संकेत उदाहरण 1
<?php $x=10; // integer variable x =10 value $y=20.20; // using floating point number y=20.20 value function add(int $x, int $y){ return $x + $y; } echo add($x, $y); ?>
आउटपुट
कोड निम्न आउटपुट देगा -
30
स्पष्टीकरण
उपरोक्त उदाहरण में, हम किसी पैरामीटर के लिए सख्त मान का उपयोग नहीं कर रहे हैं। हमने दो पूर्णांक चर, x, और y का उपयोग किया। x=10 के लिए और y फ्लोटिंग नंबर 20.20 का उपयोग कर रहा है, लेकिन y कोई त्रुटि उत्पन्न नहीं करेगा; यह केवल आउटपुट पूर्णांक मान 30 देगा।
उदाहरण 2
<?php function returnadd(int ...$integers){ return array_sum($integers); } var_dump(returnadd(2, '3', 4.1)); ?>
आउटपुट
उपरोक्त प्रोग्राम का आउटपुट होगा -
int(9)
सख्त प्रकार के संकेत
जब टाइप डिक्लेरेशन मिसमैच होता है तो स्ट्रिक्ट टाइप हिंटिंग एक घातक त्रुटि देगा। हम कह सकते हैं कि सख्त टाइप हिंटिंग सटीक प्रकार की घोषणा के एक चर को स्वीकार करता है, अन्यथा यह TypeError बेमेल को फेंक देगा।
सख्त प्रकार के संकेत में, फ़ाइल में पहला कथन घोषित किया जाना चाहिए (सख्त_प्रकार =1), अन्यथा, यह एक कंपाइलर त्रुटि उत्पन्न करेगा। यह अन्य शामिल फ़ाइलों को प्रभावित नहीं करता है जो फ़ाइलों में निर्दिष्ट नहीं हैं, जिसका अर्थ है कि यह केवल उस विशिष्ट फ़ाइल को प्रभावित करता है जिसका उपयोग किया जाता है।
सख्त प्रकार का संकेत निर्देश पूरी तरह से संकलन-समय है और इसे रनटाइम पर नियंत्रित नहीं किया जा सकता है।
सख्त प्रकार के संकेत उदाहरण 1
<?php declare (strict_types=1); function returnadd(float $x , float $y){ return $x+$y; } var_dump(returnadd(3.1,2.1)); //output float(5.2) var_dump(returnadd(3, "2 days")); //fatal error ?>
आउटपुट
उपरोक्त सख्त टाइप हिंटिंग प्रोग्राम होगा -
float(5.2) Fatal error: Uncaught TypeError: Argument 2 passed to returnadd() must be of the type float, string given, called in C:\xampp\htdocs\gud.php on line 7 and defined in C:\xampp\htdocs\gud.php:3 Stack trace: #0 C:\xampp\htdocs\gud.php(7): returnadd(3, '2 days') #1 {main} thrown in C:\xampp\htdocs\gud.php on line 3
सख्त प्रकार के संकेत उदाहरण 2
<?php declare(strict_types=1); // strict mode checking $x='1'; // string $y=20; //integer number function add(int $x, int $y){ return $x + $y; } var_dump(add($x, $y)); ?>
यह आउटपुट "घातक त्रुटि" उत्पन्न करेगा
उपरोक्त सख्त प्रकार के घोषणा उदाहरण में, यदि हम सख्त_टाइप मान 1 घोषित करते हैं, तो कोड आउटपुट देगा "घातक त्रुटि:अनकॉटेड टाइप एरर:जोड़ने के लिए पारित तर्क () int प्रकार का होना चाहिए , एक स्ट्रिंग दी गई है"।