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
}
复制代码

 

posted @   GJH-  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示