PHP object class constraints explained

Overview
PHP is a weakly typed language. PHP7 can add data types to parameters to achieve type constraints. This article explains object type constraints

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

Insert picture description here

Guess you like

Origin blog.csdn.net/qq_41526316/article/details/89448159