PHP对象类约束详解

概述
php是弱类型语言,php7可以将参数加上数据类型,实现类型约束,此文说明对象类型约束

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值