手册目录

PHP课程

浏览10512
更新时间2025-08-06

PHP - 什么是 Trait(特性)?

PHP 仅支持单继承:一个子类只能从一个父类继承。

那么,如果一个类需要继承多个行为怎么办?OOP 中的 Trait(特性)解决了这个问题。

Trait 用于声明可以在多个类中使用的方法。Trait 可以有方法和抽象方法,这些方法可以在多个类中使用,并且这些方法可以有任何访问修饰符(public、private 或 protected)。

Trait 使用 trait 关键字声明:

语法

<?php
trait TraitName {
  // 一些代码...
}
?>

要在类中使用 trait,请使用 use 关键字:

语法

<?php
class MyClass {
  use TraitName;
}
?>

让我们看一个例子:

实例

<?php
trait message1 {
public function msg1() {
    echo "OOP is fun! ";
  }
}

class Welcome {
  use message1;
}

$obj = new Welcome();
$obj->msg1();
?>
运行实例 »

点击 "运行实例" 按钮查看在线实例

例子解释

在这里,我们声明了一个 trait:message1。然后,我们创建了一个类:Welcome。该类使用了这个 trait,trait 中的所有方法都将在该类中可用。

如果其他类需要使用 msg1() 函数,只需在这些类中使用 message1 trait 即可。这减少了代码重复,因为不需要一遍又一遍地重新声明相同的方法。

PHP - 使用多个 Trait

让我们再看一个例子:

实例

<?php
trait message1 {
  public function msg1() {
    echo "OOP is fun! ";
  }
}

trait message2 {
  public function msg2() {
    echo "OOP reduces code duplication!";
  }
}

class Welcome {
  use message1;
}

class Welcome2 {
  use message1, message2;
}

$obj = new Welcome();
$obj->msg1();
echo "<br>";

$obj2 = new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
运行实例 »

点击 "运行实例" 按钮查看在线实例

例子解释

在这里,我们声明了两个 trait:message1message2。然后,我们创建了两个类:WelcomeWelcome2。第一个类(Welcome)使用了 message1 trait,而第二个类(Welcome2)使用了 message1message2 两个 trait(多个 trait 之间用逗号分隔)。

相关视频

更多

免费

php8,我来也
初级php8,我来也

321832次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

382457次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

282835次学习

收藏

免费

简单聊聊PHP创业那点事
初级简单聊聊PHP创业那点事

13418次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时 | 62.5万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时 | 39.7万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时 | 73.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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