批改状态:合格
老师批语:最好避免冲突的方式, 是使用我们后面学习的命名空间
<?php//trait组合中的方法命名冲突解决办法trait tDemo1{public static function abc(){return '名字:123';}}trait tDemo2{public static function abc(){return '年龄:18';}}trait tDemo3{use tDemo1,tDemo2{// 先替代 然后给别名tDemo2::abc insteadof tDemo1;tDemo1::abc as ab;}}class Aname{use tDemo3;}$aname = new Aname();echo $aname->ab();
<?php//trait 与 interface 接口进行组合//创建接口//判断一下 如果当前没有这个接口 那么创建if (!interface_exists('iDemo')){interface iDemo {// 创建一个静态抽象方法public static function index();}}//创建trait//也判断一下if (!trait_exists('tDemo')){trait tDemo{// 实现接口中的index方法public static function index(){return __CLASS__.'类嗲用了'.__METHOD__.'方法';}}}//创建工作类//也判断一下if (!class_exists('Cla')){class Cla implements iDemo{use tDemo;}}//访问echo Cla::index();//输出 Cla类嗲用了tDemo::index方法
<?php//设置奖品$prizes = ['电脑', '手机', '平板', '耳机', '拖鞋', '口罩'];//创建接口生成唯一ID抽象类interface onlyId{//生成唯一idpublic static function getOnlyId(int $min, int $max):int;}//创建trait实现抽象类trait AbalonesId{// 实现唯一id 传两个参数 最大值 最小值public static function getOnlyId(int $min, int $max): int{return mt_rand($min, $max);}// 返回奖品public static function prize($prizes, $id){return $prizes[$id];}}//创建工作类class DrawPrize implements onlyId{use AbalonesId;}$id = DrawPrize::getOnlyId(0, 5);echo DrawPrize::prize($prizes,$id);//随机输出数组prizes中的值
关于trait命名冲突解决办法必须先替代 insteadof 然后再选择是否给另一个同名方法赋值别名
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号