If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
Type Hinting एक mechanism है जो आपको function और method signatures में argument types specify करने की सुविधा देता है , जैसे बाकी languages like : Java , C , C++ etc . में होता है ।
ये ensure करता है की आपके functions / methods को सही type का data mile, और अगर type match नहीं करता, तो एक TypeError
throw होता है।
आपको पता होगा कि PHP एक loosely typed language मतलब कोई function/method define करते time आपको कोई type define करने की need नहीं होती। जिस भी type की value आप function call करते time pass करोगे , function उसे accept कर लेगा।
<?php
function print_type($x) {
echo gettype($x);
echo "\n";
}
print_type(12);
print_type(3.4);
print_type("hi");
print_type(true);
print_type(new stdClass);
print_type([1,2]);
?>
example में आप देख सकते हैं कि function में defined variable के लिए call करते time किसी भी type की value को pass कर सकते हैं।
लेकिन PHP आपको ये option भी देती है कि आप proper syntax और type के साथ code लिख सकते हैं , जिसे Type Hinting कहते है।
इसका मतलब है की आप function या method call करते वक्त जो arguments pass करते हैं, उनके types को specify कर सकते हैं , अगर wrong type pass होता है, तो run-time error
throw होता है।
●●●
Error Prevention : Type hinting से ensure होता है की functions और methods को सही type के arguments
मिल रहे हैं, जिस से unexpected behavior और runtime errors कम होते हैं।
Code Clarity : जब आप types specify करते हैं, तो code ज़्यादा self-explanatory और समझने में आसान हो जाता है।
Refactoring and Maintenance : Type hinting से code को refactor और maintain करना आसान हो जाता है, क्योंकि types clearly defined होते हैं।
●●●
PHP में type hinting कई types के लिए होता है, जैसे -
Classes and Interfaces : Ensure करता है की argument किसी specific class या interface का instance है।
Array : Ensure करता है की argument एक array है।
Callable : Ensure करता है की argument एक callable type है।
Scalar Types (since PHP 7.0) : int, float, string, और bool include करता है।
Iterable (since PHP 7.1 ): Ensure करता है की argument एक array या object है जो Traversable interface implement करता है।
Object (since PHP 7.2) : Ensure करता है की argument कोई भी object है।
Union Types (since PHP 8.0) : Multiple acceptable types specify करने की सुविधा देता है।
●●●
<?php
// define argument's type & methd return type.
function sum(int $a, int $b) : void {
echo $a+$b;
echo "\n";
}
// now call the function.
sum(12,23);
?>
Example में defined function को आप देख कर ही अंदाजा लगा सकते है ,कि function किस तरह की values
accept कर रहा है और void return कर रहा है।
अब अगर same function को different values से access करना चाहेंगे तो error आएगी।
For eg.
// call function with string value. sum('a', 23); // Fatal error: Uncaught TypeError: sum(): Argument #1 ($a) must be of type int, string given
तो आप देख सकते हैं कि Type Hinting कितनी important और powerful चीज है।
●●●
हालाँकि normal function के अलावा Type Hinting का use Classes में भी बहुत होता है।
<?php
class User {
private $name;
public function __construct(string $name) {
$this->name = $name;
}
public function getName(): string {
return $this->name;
}
}
function printUserName(User $user): void {
echo $user->getName();
}
$user = new User("Alice");
printUserName($user); // Output: Alice.
?>
हालाँकि अगर User object के अलावा कुछ और pass करेंगे तो again आपको error मिलेगी।
printUserName(123); // Fatal error: Uncaught TypeError: printUserName(): Argument #1 ($user) must be of type User, int given
●●●
Improved Code Quality : Code quality improve होती है, क्योंकि यह clear होता है की क्या types expected हैं।
Better IDE Support : IDEs better code completion, refactoring tools, और error detection provide कर सकती हैं type information के साथ।
Enforces Consistency : Ensure करता है की आपके codebase के सभी parts functions और methods को consistently use कर रहे हैं।
Enhanced Readability : Developers के लिए data flow को समझना आसान हो जाता ह।
●●●
आप समझ गए होंगे कि PHP में Type Hinting क्या है और इसे कैसे implement करते हैं।
Related Topics -
Loading ...