PHP 7 स्केलर टाइप घोषणा और रिटर्न टाइप घोषणा में दो प्रकार के हिंटिंग का उपयोग करता है:
- कमजोर टाइप हिंटिंग
- सख्त टाइप हिंटिंग
कमजोर टाइप हिंटिंग
डिफ़ॉल्ट रूप से, PHP 7 कमजोर टाइप चेकिंग मोड में काम करता है। कमजोर टाइप चेकिंग कोई त्रुटि या घातक त्रुटि नहीं देगा। जब टाइप घोषणा बेमेल होती है तो यह बिना किसी त्रुटि फेंके कोड को केवल निष्पादित करेगा।
strict_types declare() का उपयोग करके, हम कमजोर टाइप चेकिंग को नियंत्रित कर सकते हैं।
declare(strict_types=0); // कमजोर टाइप-चेकिंग; हमें सख्त मान = 0 सेट करना चाहिए
कमजोर टाइप हिंटिंग उदाहरण 1
<?php
$x=10; // पूर्णांक वेरिएबल x = 10 मान
$y=20.20; // फ्लोटिंग पॉइंट नंबर y=20.20 मान का उपयोग
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 बेमेल फेंक देगा।
सख्त टाइप हिंटिंग में, फ़ाइल में पहला स्टेटमेंट declare (strict_types=1) घोषित किया जाना चाहिए, अन्यथा यह कंपाइलर त्रुटि उत्पन्न करेगा। यह उन अन्य शामिल फ़ाइलों को प्रभावित नहीं करता जो फ़ाइलों में निर्दिष्ट नहीं हैं, जिसका अर्थ है कि यह केवल उस विशिष्ट फ़ाइल को प्रभावित करता है जिसमें इसका उपयोग किया जाता है।
सख्त टाइप हिंटिंग निर्देश पूरी तरह से कंपाइल-टाइम है और रनटाइम पर नियंत्रित नहीं किया जा सकता।
सख्त टाइप हिंटिंग उदाहरण 1
<?php
declare (strict_types=1);
function returnadd(float $x , float $y){
return $x+$y;
}
var_dump(returnadd(3.1,2.1)); // आउटपुट float(5.2)
var_dump(returnadd(3, "2 days")); // घातक त्रुटि
?>
आउटपुट
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); // सख्त मोड चेकिंग
$x='1'; // स्ट्रिंग
$y=20; // पूर्णांक संख्या
function add(int $x, int $y){
return $x + $y;
}
var_dump(add($x, $y));
?>
यह "घातक त्रुटि" आउटपुट उत्पन्न करेगा
उपरोक्त सख्त टाइप घोषणा उदाहरण में, यदि हम strict_type मान 1 घोषित करते हैं, तो कोड आउटपुट "Fatal error: Uncaught TypeError: Argument 1 passed to add() must be of the type int, a string is given" देगा।