PHP對象類約束詳解

概述
php是弱類型語言,php7可以將參數加上數據類型,實現類型約束,此文說明對象類型約束


<?php
 //創建01.php文件
 /**
  * 接口
  * Interface Human
  */
 interface Human
 {
     public function say();
  
     public function run();
 }
  
 /**
  * 實現 Human 接口
  * Class Boy
  */
 class Boy implements Human
 {
     public function say()
     {
         echo 'a boy say';
     }
  
     public function run()
     {
         echo 'a boy run';
     }
 }
  
 /**
  * 實現 Human 接口
  * Class Girl
  */
 class Girl implements Human
 {
     public function say()
     {
         echo 'a girl say';
     }
  
     public function run()
     {
         echo 'a girl run';
     }
}
  
<?php
 
 include './01.php';
  
 class Action
 {
     /**
      * Boy 對象類型約束
      * @param Boy $boy
      */
     public function boySay(Boy $boy)
     {
         $boy->say();
     }
  
     /**
      * Girl 對象類型約束
      * @param Girl $girl
      */
     public function girlSay(Girl $girl)
     {
         $girl->say();
     }
  
     /**
      * Human 接口類型約束
      * @param Human $obj
      */
     public function humanRun(Human $obj)
     {
         $obj->run();
     }
 }
  
 $obj = new Action();
 $obj->boySay(new Boy());// a boy say
 echo '<br />';
 exit();
 $obj->girlSay(new Girl());// a girl say
 echo '<br />';
 $obj->humanRun(new Boy());// a boy run
 echo '<br />';
 $obj->humanRun(new Girl());// a girl run
 //總結
 php7實現類型約束 以上實現了php對象類約束
 public function boySay(Boy $boy)
 {
        參數Boy限制傳入的對象必須是new Boy()得到,類名是Boy
        參數$boy是new Boy()的實例
        $boy->say();
 }
如果傳入Girl對象實例,則php就會報錯,不正確的傳入類對象,如下圖
$obj->boySay(new Girl());

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章