首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PHP中Trait知识点总结

PHP中Trait知识点总结

原创
作者头像
俗可耐
发布于 2018-07-27 06:29:46
发布于 2018-07-27 06:29:46
1.1K0
举报
文章被收录于专栏:俗人笔记俗人笔记

知识点说明

  1. 使用关键字Trait进行定义一个trait;
  2. 类中使用use关键字进行引用trait,引用多个trait,使用逗号进行分隔;
  3. 优先级:当前类 > Trait > 父类;
  4. 解决冲突。使用instead of来指定使用哪个类的哪个方法,或者使用as来为冲突的方法重命名,见下面示例1;
  5. 可以使用as来修改方法的访问控制;
  6. trait组合:在trait中use其他的trait;
  7. Trait支持定义抽象成员;
  8. Trait支持定义静态成员,但是对不同的类,其静态值相互隔离;
  9. 属性冲突:Trait 定义了一个属性后,类就不能定义同样名称的属性,否则会产生 fatal error。 有种情况例外:属性是兼容的(同样的访问可见度、初始默认值)。 在 PHP 7.0 之前,属性是兼容的,则会有 E_STRICT 的提醒。

Trait和Interface的区别

Interface中只有方法的定义,没有实现。

重点

  1. Trait中魔术变量__CLASS__的值是usetrait的类名,而不是调用trait中方法的类。例:父类中进行use,在子类的实例中进行调用trait的方法,__CLASS__的值是父类的类名。
  2. 对于关键字use,引用trait时,如果省略初始\,则表示是相对当前namespace的相对路径;在引入类时,省略初始\则表示引入根命名空间下的类。
  3. 根据__CLASS__的特性,可以实现单例的trait。见下面示例2

示例

示例1 - 解决方法冲突
代码语言:txt
AI代码解释
复制
<?php
trait A {
    public function smallTalk() {
        echo 'a';
    }
    public function bigTalk() {
        echo 'A';
    }
}

trait B {
    public function smallTalk() {
        echo 'b';
    }
    public function bigTalk() {
        echo 'B';
    }
}

class Talker {
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
    }
}

class Aliased_Talker {
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
        B::bigTalk as talk;
    }
}
示例2 - 实现单例Trait
代码语言:txt
AI代码解释
复制
trait singleton {    
    /**
     * private construct, generally defined by using class
     */
    //private function __construct() {}
    
    public static function getInstance() {
        static $_instance = NULL;
        $class = __CLASS__;
        return $_instance ?: $_instance = new $class;
    }
    
    public function __clone() {
        trigger_error('Cloning '.__CLASS__.' is not allowed.',E_USER_ERROR);
    }
    
    public function __wakeup() {
        trigger_error('Unserializing '.__CLASS__.' is not allowed.',E_USER_ERROR);
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
五菱宏光MINI EV,重走“小米”路
前段时间上汽通用五菱在宏光MINI EV上又一次加码,推出国内市场首款纯电动微型敞篷车,官方售价为9.99万元。与此同时,五菱宏光MINI EV GAMEBOY版也推出了两款全新的车身配色。
用户2908108
2022/12/17
4040
五菱宏光MINI EV,重走“小米”路
“上不了路”的微型电动车
然而近日,有消费者在论坛发帖称,自4月下旬开始,想给新车上新能源牌照并不顺利。4S店方面表示,上海有关部门通知了所有相关电动汽车经销商:续航里程350公里以下、车长4.6米以内、车价在10万以下的新能源汽车暂时无法在上海登记注册,具体要等5月份出台新政策之后,才能进行牌照审批。
镁客网
2021/06/08
4370
欧拉的“她力量”,如何为品牌注入新能量?
近日,百度营销联合CBNData推出的《2022新能源汽车趋势洞察》正式发布,报告显示,随着新能源汽车的普及,新中产女性已成为了“消费新势力”。
用户2908108
2023/02/26
4330
欧拉的“她力量”,如何为品牌注入新能量?
2021年全球新能源销量榜单出炉,中国市场新能源汽车销量亮眼!
2021年全球新能源品牌销量榜单火热出炉。据CleanTechnica网站公布的2021年全球新能源品牌销量数据显示,2021年全球新能源车型累计销量近650万辆,较去年同期增长108%,其中TOP20品牌销量476.34万辆,占全球销量的73.3%。
恩泽能源
2022/02/10
6260
长城汽车,有些焦虑
先是欧拉好猫车上用的芯片和实际不符被消费者投诉,后又宣布欧拉黑猫、好猫停止接单,最新公布的公司2月份销量又同比下降两成之多。
用户8049510
2022/03/23
2540
破圈路上的五菱汽车,站在岔路口
“昨晚我在秋名山输给一辆五菱宏光,他的速度很快,用惯性漂移过弯,我只看到他的车身写着修补漏水房顶的招牌,如果你见到他,麻烦告诉他,周六晚上我在秋名山等他。”
刘旷
2021/01/08
3220
破圈路上的五菱汽车,站在岔路口
新能源车“乱战时代”,车企们在争什么?
据不完全统计,国内市场在售的新能源汽车品牌,已经超过了70多个。而这70多个品牌,目前已经推出了200多款新能源汽车。其中包括传统厂商参与孵化出的各种新品牌,比如上汽智己、长安阿维塔、长安深蓝、长城沙龙等。
用户2908108
2022/12/17
2800
新能源车“乱战时代”,车企们在争什么?
8大数据看2016车市风水流转
2016年中国汽车产销均超2800万辆,连续8年蝉联全球第一。而在另一半球的美国,2016全年销量约为1754万辆,保持了7年的连续增长。中美两国车市就像两国经济一样,此消彼涨又相互依存,在竞争中完成
灯塔大数据
2018/04/08
6960
8大数据看2016车市风水流转
迈入第三次创业时代,小康股份一路“爬坡过坎”
如果要在大A股汽车板块中挑出一只牛股或者妖股,很多人会想到“小康股份”。即便是没有听过这个名字,那么它旗下的赛力斯问界M5,应该多少都有耳闻。
用户2908108
2022/09/02
2850
迈入第三次创业时代,小康股份一路“爬坡过坎”
才一年,智能车就不再是新势力专利!
贾浩楠 李明敏 发自 凹非寺 量子位 | 公众号 QbitAI 汽车工业百年,如今也到了“未有之大变局”的时刻。 新老玩家,纷纷开始掉头向智能化转型。 最明显的,更主流的合资或自主品牌,也都在2021年拿出了新能源主打车型,加速智能化转型。 “转型”,对于大部分车企都意味伤筋动骨、艰难跋涉,在众多品牌中,长城汽车可谓是转型成效最快最明显的品牌之一。它的转型之路,对传统汽车行业,颇具启示意义。 长城汽车,怎么向智能转型? 销量就是最好的说明。对比其他玩家,长城汽车是2021年为数不多燃油和新能源业务都大幅增
量子位
2022/03/04
3870
新能源车企凶猛下沉,“新车商”是一条捷径吗?
根据11月份的销量数据,小鹏、理想、蔚来以及哪吒汽车当月的交付量均超过万台,零跑和威马的交付量达到了5000台的高位,极氪、创维、岚图等品牌也纷纷给出了月交付量上千台的成绩单。
Alter聊科技
2023/01/13
3220
集体唱好混动技术,传统车企最后的倔强?
魏牌CEO李瑞峰和华为余承东的“口水战”,迅速在舆论场上掀起了“增程式混动技术是否落后”的争论。就在吃瓜群众们一脸懵圈的时候,长城的柠檬DHT混动系统适时出现在了不少媒体的宣传稿中。
Alter聊科技
2023/01/13
1820
2020年营收、净利双收,长城汽车做对了什么?
1月11日,百度官方宣布与吉利控股集团合作,组建一家智能电动汽车公司,正式以整车制造商的身份进军汽车行业,为汽车产业添砖加瓦。
刘旷
2021/02/02
5060
造车新势力离丰收还有多远?
7月30日,理想汽车在纳斯达克上市;8月27日晚间,小鹏汽车正式登陆纽交所。继蔚来汽车2018年IPO后,终于再有两家造车新势力公开募股。
用户2908108
2020/11/03
3820
造车新势力离丰收还有多远?
联合创始人离职,零跑汽车能力为何总是被质疑
1月23日,消息人士透露,零跑汽车联合创始人、总裁吴保军已经辞去总裁职务。这一人事变动引起了业内的广泛关注。据悉,随着吴保军的离职,零跑汽车将不再设置总裁岗位。对于这一消息,零跑汽车方面对外表示:“不予置评。”
数据猿
2024/01/24
2090
联合创始人离职,零跑汽车能力为何总是被质疑
新能源车又迎洗牌年:蔚来向左、埃安向右
油价上涨和电车涨价的消息接连传来,让不少车主陷入了两难境地:开油车有钱包焦虑,开电车有里程焦虑。虽然车主们百般纠结,但电车市场依旧形势大好,新能源汽车成为“市场宠儿”已是不争的事实了。
用户6132544
2022/04/20
2690
实现“双碳”,车企们要付出多大努力?
据统计,2008年至2018年,我国交通领域CO2排放增长5.8亿吨,其中5.1亿吨来自于道路交通,占总增量的88%,其背后的原因是在这十年间我国乘用车保有量增长了557%,成为碳排放增长的主要驱动力。就交通行业的排放量而言,包括陆路、水路以及航空在内的交通领域是我国第三大碳排放源。
用户2908108
2022/02/28
1K0
实现“双碳”,车企们要付出多大努力?
【喂饭级教程】开发效率翻倍!让大模型API为你打造虚拟导师!
大家好,我是程序员小灰,最近一直在关注人工智能的发展。大家有没有发现,近几年 AI 尤其是在自然语言处理方面进步特别快?比如说 GPT-4,这些模型在生成和理解文本方面表现得特别厉害,可以处理海量数据,还能进行复杂的推理。
小灰
2024/07/12
1840
【喂饭级教程】开发效率翻倍!让大模型API为你打造虚拟导师!
月销10万+!长城汽车全面发力“森林式生态体系”结硕果
市场环境动荡、行业转型、技术升级、消费趋缓......在一系列不确定性因素的影响下,汽车行业正在进入一个关键的发展周期。由此,销量数据成为了行业内外共同关注的一个焦点,不管是车企还是市场,都太需要在消费端去寻找跨越这个周期的秘诀了。
用户2908108
2022/12/17
1870
月销10万+!长城汽车全面发力“森林式生态体系”结硕果
传统车企转型续命:理想很丰满,现实很骨感
在“双碳”背景下,许多国家纷纷拟定了从传统燃油车向新能源汽车转型的时间节点。截至目前,已有许多国家相继宣布在2025—2030年间停售燃油车。例如英国决定在2030年禁售燃油车,挪威计划在2025年禁售燃油车,法国、以色列、西班牙等国家计划在2030年至2040年间逐渐淘汰燃油车。所以对传统燃油车企来说,未来的生存环境并不乐观。
用户9702975
2022/06/15
2220
推荐阅读
相关推荐
五菱宏光MINI EV,重走“小米”路
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档