3.4PHP语言的Trait

Trait与接口的最大区别是:Trait包含了实现,而接口则需要指定一个实现该接口的类。

Trait 和 Class 相似,但仅仅旨在用细粒度和一致的方式来组合功能。所以,Trait内部可定义抽象方法,静态属性,静态方法,实例属性,实例方法。

个人见解:Trait功能是接口的升级版,类似于Ruby语言中的Module(模块)功能,不过Ruby语言中的Module(模块)功能实现了PHP语言中的接口,Trait,命名空间三大功能。

优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法。

<?php
class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}

class MyHelloWorld extends Base {
    use SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello();
?>

以上例程会输出:

Hello World!

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phplang/5030.html

(0)
上一篇 2021年3月3日 22:22
下一篇 2021年3月4日 20:16

相关推荐

  • 1.6PHP语言的函数(Function)

    1.函数定义 2.函数分类 名称 修饰符 访问 静态方法(static method) 用 static 修饰 类::静态方法 实例方法(instance method) 无 static 修饰 对象->实例方法 3.参数分类 名称 修饰符 值参数 无 默认值参数 无 引用参数 用 & 修饰 可变参数 用…

    PHP语言教程 2021年1月6日
    04870
  • 2.3PHP标量(Scalar)类型之字符串(string)

    常规字符串,比如’string’、”string”;数值字符串,比如“888”。 1.单引号(”)字符串与双引号(“”)字符串的区别 区别一:单引号只支持单引号自身和反斜线自身的转义,而双引号除此之外还支持以下转义。 转义 含义 \n …

    PHP语言教程 2021年2月3日
    04520
  • 1.1PHP语言的标记(Tag)

    PHP 脚本以 <?php 标记开头,以 ?> 标记结尾。 PHP解释器会执行 <?php 和 ?> 标记内的代码,标记外的内容会原封不动地输出。 如果文件内容仅仅包含 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP …

    PHP语言教程 2021年1月1日
    05680

发表回复

登录后才能评论