PHPでのパラメータヒント

3852 ワード

PHPは自分が弱いタイプの言語である呼び出し方法がパラメータタイプである可能性のある問題を解決するために,パラメータヒントを導入し,コードを見る
 1 <html>
 2      <body>
 3          <?php
 4             class Man {
 5                 private $name;
 6                 
 7                 function getName() {
 8                     return $this->name;
 9                 }
10                 
11                 function setName($name) {
12                     $this->name = $name;
13                 }
14             }
15 
16             class Wrong {}
17             
18             function callMan(Man $man) {
19                 echo "Hey " . $man->getName();
20             }
21             
22             $man = new Man();
23             $man->setName('Jack');
24             
25             callMan($man);
26             callMan(new Wrong());
27          ?>
28      </body>
29  </html>

出力を見て
Hey JackCatchable fatal error: Argument 1 passed to callMan() must be an instance of Man, instance of Wrong given, called in D:\www\index.php on line 26 and defined in D:\www\index.php on line 18
callMan()関数の入力パラメータタイプがManではないため、catchable fatal errorを招いた.これでPHPは徐々に矛盾し、多くの自分の特性が自分に迷惑をかけ、新しい特性を出して元の問題を解決したと思う.