php 设计模式 之 interface 接口简介

须知

  1. 与大多数抽象类同样,interface 也有抽象方法,无论不能和抽象类同样在接口中包含具体的方法或变量(作为抽象性的例外)
  2. 通常约定接口总以字母 I 或者 i 开头
  3. 接口中定义的全部方法都必须是public,这是接口的特性
  4. 实现多个接口时,接口中的方法不能有重名。
  5. 接口也能够继承,经过使用 extends 操做符。
  6. 类要实现接口,必须使用和接口中所定义的方法彻底一致的方式。不然会致使致命错误。
  7. 接口中也能够定义常量。接口常量和类常量的使用彻底相同,可是不能被子类或子接口所覆盖。

理解

PHP接口类interface就是一个类的领导者,指明方向,子类必须完成它指定方法this

简单代码示范

/**
 * 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
相关文章
相关标签/搜索