php Trait像类一样继承函数
PHP 2024/11/28 0:09:41 点击:不统计
php中Trait用来定义一组函数,让任何的类可以直接方便的向继承父类一样继承了对应的函数。
下面看Trait像类一样继承函数 的案例:
<?php
# 1. 定义 Trait 对象
trait A
{
function add($x, $y)
{
return $x + $y;
}
}
trait B
{
function mul($x, $y)
{
return $x * $y;
}
}
#2. 类C中继承使用 Trait
class C
{
use A, B;
public function run($x, $y)
{
echo $this->add($x, $y);
echo ",";
echo $this->mul($x, $y);
}
}
$c = new C();
$c->run(2, 3);
# 输出 5,6
# 3 如果出现重复函数定义,那需要在指定调用 那个的trait的方法
trait E
{
function add($x, $y)
{
return $x + $y - 1; # 这里单独减一
}
}
class D
{
use A, E {
A::add insteadof E;
E::add as b_add;
}
public function run($x, $y)
{
echo $this->add($x, $y);
echo ",";
echo $this->b_add($x, $y);
}
}
$d = new D();
$d->run(2, 3);
# 输出 5,4
最后说明:
(1)Traits 不能独立实例化:它们只是代码块,不能单独使用,必须通过类来使用。
(2)方法优先级:当一个类使用 Trait 和继承父类的方法时,Trait 中的方法优先于父类方法。
(3)属性和方法冲突:Traits 可以包含属性,如果属性与类或其他 Traits 的属性冲突,需要明确调整。