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());

在这里插入图片描述

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