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;
}
}