PHP-Trait
Trait 可以帮助解决 PHP 单继承的问题,实现类似多继承的效果。针对于类;
而像Go(其实也是一种接口)、Rust(类似接口)中可以针对类型的行为限制
- Trait 主要用于代码复用和组合,可以将一组方法和属性注入到类中,使得类具备 Trait 中定义的功能。
- Trait 的使用是通过
use
关键字将 Trait 应用到类中,可以在类中使用多个 Trait,实现更灵活的代码组合。 - Trait 本身可以包含方法的实现,而接口则只能声明方法的定义,需要在实现接口的类中提供具体的实现。
trait Trait1 { public function method1() { // Trait1 中的方法实现 } } trait Trait2 { public function method2() { // Trait2 中的方法实现 } } class MyClass { use Trait1, Trait2; // MyClass 中的其他代码 }
<?php trait Dog{ public $name="dog"; public function bark(){ echo "This is dog"; } } class Animal{ public function eat(){ echo "This is animal eat"; } } class Cat extends Animal{ use Dog; public function drive(){ echo "This is cat drive"; } } $cat = new Cat(); $cat->drive(); echo "<br/>"; $cat->eat(); echo "<br/>"; $cat->bark();
Go
func Add[T Numeric](a, b T) T { return a + b }
Rust
trait Sound { fn make_sound(&self); } struct Dog {} struct Cat {} impl Sound for Dog { fn make_sound(&self) { println!("Woof"); } } impl Sound for Cat { fn make_sound(&self) { println!("Meow"); } } fn main() { let dog = Dog {}; dog.make_sound(); // 输出: Woof let cat = Cat {}; cat.make_sound(); // 输出: Meow }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律