PHP契约式编程

先复习一下面向对象编程中的两个重要元素:抽象类和接口

抽象类

当类中有一个方法为抽象方法,该类就应该定义为抽象类

继承一个抽象类,应该实现其所有抽象方法

推荐阅读:

例:

<?php
abstract class car{
    protected $name;
    protected $speed;
   
    public function __construct($name, $speed){
          $this->name=$name;
          $this->speed=$speed;
    }
   
    abstract function run();
   
    public function __get($k){
          if(in_array($k, array('name'))){
              //如果访问的属性是不允许的,抛出error级别错误
              trigger_error ( "禁止访问私有成员 : ".$k , E_USER_ERROR  ) ;
              return ;
          }
       
          return $this->$k;
    }
}

接口
 
接口定义了一系列必要的操作,实现接口的类必须实现接口的方法
 
例:

people.interface.php
<?php
interface people{
   
    //定义say方法,时所有派生类必须实现
    public function say();
   
}


work.class.php
<?php
include 'people.interface.php';
class worker implements people{

    private $name;
    private $age;
   
    public function __construct($name, $age){
          $this->name=$name;
          $this->age=$age;
    }
   
    //实现接口定义方法
    public function say(){
          echo $this->name.', age is '.$age.' <br />';
    }
   
    public function __get($k){
          if($k=='name'){
              //如果访问的属性是不允许的,抛出error级别错误
              trigger_error ( "禁止访问私有成员 : ".$k , E_USER_ERROR  ) ;
              return;
          }
          return $this->$k;
    }
}

相关推荐