须知
- 与大多数抽象类一样,interface 也有抽象方法,不管不能和抽象类一样在接口中包含具体的方法或变量(做为抽象性的例外)
- 一般约定接口总以字母 I 或者 i 开头
- 接口中定义的所有方法都必须是public,这是接口的特性
- 实现多个接口时,接口中的方法不能有重名。
- 接口也可以继承,通过使用 extends 操作符。
- 类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。
- 接口中也可以定义常量。接口常量和类常量的使用完全相同,但是不能被子类或子接口所覆盖。
理解
PHP接口类interface就是一个类的领导者,指明方向,子类必须完成它指定方法
简单代码示范
/**
* interface 接口
* 与大多数抽象类一样,interface 也有抽象方法,不管不能和抽象类一样在接口中包含具体的方法或变量(做为抽象性的例外)
* 一般约定接口总以字母 I 或者 i 开头
* 接口中定义的所有方法都必须是public,这是接口的特性
*/
// 定义一个接口类,以 interface 开头而不是 class
interface ISMS{
// 可以定义常量
const USERNAME = 'hhh';
// 定义的方法,子类必须实现
public function getInfo($info);
public function sendInfo($info);
}
// 实现一个接口,使用 implements 而不是 extends
class Register implements ISMS{
// 使用接口常量,需要用 作用域解析操作符
private $username = ISMS::USERNAME;
public function getInfo($info){
return 'getInfo=>'.$info;
}
public function sendInfo($info){
return 'sendInfo=>'.$info;
}
public function getUserName(){
return $this->username;
}
}
$test = new Register();
echo $test->getInfo('Enda'); // getInfo=>Enda
echo $test->sendInfo('Enda'); // sendInfo=>Enda
echo $test->getUserName(); // hhh