博主信息
博文 11
粉丝 0
评论 0
访问量 11788
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Trait 命名冲突的解决方案及改成员的访问控制
PHP新手学习记录
原创
953人浏览过

命名冲突解决方法

如果两个 trait 都插入一个同名的方法,没有明确解决会产生一个致使错误。解决方案有如下两种:

  1. 1.使用 insteadof 操作符来明确使用哪一个 trait 中的方法(此方法会排除其他方法);
  2. 2.使用 as 操作符为某个方法起个别名。

代码示例:

  1. trait A {
  2. public static function say() {
  3. echo '我是 trait A say() 方法<br>';
  4. }
  5. }
  6. trait B {
  7. public static function say() {
  8. echo '我是 trait B say() 方法<br>';
  9. }
  10. }
  11. class Talk {
  12. use A, B {
  13. // 指明使用 trait A 方法
  14. A::say insteadof B;
  15. // trait b 中的 say 方法取别名 s
  16. B::say as s;
  17. }
  18. }
  19. Talk::say();
  20. Talk::s();

输出结果:

  1. 我是 trait A say() 方法
  2. 我是 trait B say() 方法

改变 trait 成员的访问控制

使用 as 语法可以调整方法的访问控制

  1. trait ComputerTrait
  2. {
  3. private static function shutDown() {
  4. echo '已关机';
  5. }
  6. }
  7. class Computer
  8. {
  9. use ComputerTrait {
  10. // 将 shutDown 方法访问控制设置为 public
  11. shutDown as public;
  12. }
  13. }
  14. Computer::shutDown();

输出结果:

  1. 已关机
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:下次写完一起提交
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学