Blogger Information
Blog 11
fans 0
comment 0
visits 9123
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Trait 命名冲突的解决方案及改成员的访问控制
PHP新手学习记录
Original
755 people have browsed it

命名冲突解决方法

如果两个 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. 已关机
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:下次写完一起提交
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post