开启辅助访问
帐号登录 |立即注册

如何解决trait类出现重名方法的问题

 
类中的公共或外部代码主要来源:自
1:父类   单一继承,一个子类只能继承一个父类,使用关键字extends
2: trait类(方法集)   多继承,一个子类可以继承多个 trait类,使用关键字use

<?php
//trait类还可以互相嵌套
//1.创建个trait类TestI
trait Test1
{
public function hello()
return 'Test1::hello()';
}
}
/12.创建一个trait类Test2
trait Test2
{
public function hello()
{
return 'Test2::hello()';
}
}
//3.创建类Demo
class Demo
{
use Test1, Test2{
//用Test1: :hello()替换Test2: :hello()
Test1: :hello insteadof Test2;
//用别名访问Test2: :hello方法
Test2::hello as test2Hello;
}
}
// 测试
$obj = new Demo;
echo $obj->hello();
echo '<hr>' ;
echo $obj->test2Hello(); //test2Hello 是Test2: :hello()方法的别名

trait类不能被实例化,只能被子类引用,使用use关键字
使用use关键字,可以导入多个trait类
出现同名方法时,子类优先级大于trait类,trait类优先级大于父类。

回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

友情链接
  • 艾Q网

    提供设计文章,教程和分享聚合信息与导航工具,最新音乐,动漫,游戏资讯的网站。