开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1503|回复: 0
收起左侧

[PHP相关教程] PHP - trait命名冲突解决办法与实战小案例

[复制链接]
发表于 2020-7-19 11:03:57 | 显示全部楼层 |阅读模式   山东省德州市
[md]## 1. trait 命名冲突解决办法
```php
<?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();

```

## 2. trait  与 interface 接口进行组合
```php
<?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方法
```


## 3. 一个简单的抽奖

```php
<?php

//设置奖品
$prizes = ['电脑', '手机', '平板', '耳机', '拖鞋', '口罩'];

//创建接口生成唯一ID抽象类
interface onlyId
{
//生成唯一id
    public 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中的值

```


您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表