一、php接口的基本语法和使用场景
A.以下10点小知识,查了一下资料得出,供参考。
1.使用关键字:interface
2.类是对象的模板,接口是类的模板
3.接口看作是一个特殊的类
4.接口中的方法,只声明不实现,与抽象类一样
5.接口中的方法必须是public,支持static
6.接口中可以声明类常量const,但不允许被类或子接口覆盖
7.用类实现一个接口使用implements 关键字
8.一个类可以实现多个接口,多个接口之间用逗号分开
9.接口之间也可以使用关键字extends继承
10.一个类实多个接口时,方法不可以重名。
B.实例说明:
1)单接口
<?php // 1:单接口 // 创建接口 interface Iemy { const city = 'foshan'; public static function write1(); } // 工作类实现接口 class iJuzhu implements Iemy { protected static $zone = 'shunde'; public static function write1() { return Iemy::city . '有个区名叫: ' . self::$zone ; } } // 客户端 echo Iemy::city , '<br>'; echo iJuzhu:: write1();
运行结果:
2)多接口继承的实例场景
<?php // 多接口继承 interface iUser1 { const grade1 = '普通会员'; } // 接口2继承接口1 interface iUser2 { const grade2 = '银牌会员'; } // 接口3继承以上两个接口,即继承接口1和接口2 interface iUser3 extends iUser2 { const grade3 = '金牌会员'; // 抽象方法 public static function write1(); } // 工作类 class allgrade implements iUser3 { protected static $fenlei = '会员等级'; // 实现抽象方法 public static function write1() { return self::$fenlei . '分别是:' . iuser1::grade1 . '、' . iuser2::grade2 . '、' . iuser3::grade3; } } // 客户端 echo allgrade::write1();
运行结果:
3)用抽象类来部分实现一个接口
<?php // 接口场景3: 用抽象类来部分实现一个接口 interface iUser1 { const grade = '普通会员'; const discount = '九折'; public static function daiyu1(); public static function daiyu2(); public static function huiyuan(); } // 用抽象类实现接口 abstract class Huiyuan2 implements iUser1 { public static function huiyuan() { return '注册会员可以享受折扣'; } } // 工作类 class Xiangshou extends Huiyuan2 { public static function daiyu1() { return '普通会员享受九折优惠'; } public static function daiyu2() { return '没折扣'; } } // 客户端 echo Huiyuan2::huiyuan(),'<br>'; echo Xiangshou::daiyu1();
运行结果:
二、trait 的基本功能及代码复用
trait 的出现就像一个小三,能够促进家庭的和谐发展一样,可以横向的在多个家庭间穿梭,大家都喜欢使用。
1.trait 功能与语法
调用关键字:use
声明关键词:trait
trait里面可以有:静态成员,抽象成员,普通成员;不能使用常量。
trait内的属性会和调用它的类内的同名的属性冲突:
优先顺序:当前类成员 > trait类成员 > 基类成员
一个类可以继承多个trait, 通过逗号相隔;
trait不能在接口中使用。
2.实例说明:
<?php //利用trait进行简单抽奖小案例 $jiangpin = ['课程大礼包价值1000元', '线上课程8节', '学费减免100元', '拉杆箱一个']; // 接口 interface Inewer { // 随机抽奖机制 public static function generateId(int $min, int $max): int; } // trait实现目的 trait tCreateId { public static function generateId(int $min, int $max): int { return mt_rand($min, $max); } } // 工作类 class Prize implements Inewer { use tCreateId; public static function choujiang(array $jiangpin, int $id) { return $jiangpin[$id]; } } //抽奖结果如下 $id = Prize::generateId(0, 4); $jiangpin = Prize::choujiang($jiangpin, $id); printf('你真幸运,抽中的奖品是: .%s', $jiangpin);
运行结果:
三、总结:PHP小白学的有点辛苦,主要是不知道如何用在项目中,无从下手。但还是想坚持,希望老师不要嫌弃我完成作业慢一点,时间分配好重要。