• 技术文章 >后端开发 >PHP问题

    traits与interfaces有什么区别?

    coldplay.xixicoldplay.xixi2020-07-01 15:43:02原创58

    traits与interfaces的区别是:1、trait类似于include,可以用use放在类中间,定义的方法作为class的一部分,本身不能直接实例化;2、interface里面的方法都是虚拟的,需要在继承的时候对这些方法进行重定义。

    traits与interfaces的区别是:

    1、trait看上去更像是为了代码的复用而写的一个小插件,它类似于include,可以用use放在类中间,让trait里面定义的方法作为class的一部分,本身不能直接实例化。

    2、interface里面的方法都是虚拟的,需要在继承的时候对这些方法进行重定义。也就是说,方法是说明性质的,并没有实际操作,而你在继承的时候,需要实现这些方法,不然就会出错,而且不能缺失。interface经常用于架构的时候,对一个实例所拥有的属性和方法进行抽象定义。简单来讲类似一个协议,是老板下达的任务。你要继承的话,必须满足这个协议,也就是完成老板下达的任务。

    <?php
    trait MyTrait
    {
        protected $var = 'MyTrait_var';
        protected $var1 = 'MyTrait_var';
     
        function __construct()
        {
            echo $this->var."</br>";
        }
     
        function a()
        {
            echo "a"."</br>";
        }
    }
     
    interface MyInterface
    {
        function __construct();
        function b();
    }
     
    abstract class MyAbstract
    {
        protected $var2 = 'MyAbstract_var';
        use MyTrait;
     
        function b()
        {
            echo "b"."</br>";
        }
    }
     
    class MyClass extends MyAbstract implements MyInterface
    {
        protected $var3 = 'MyClass_var';
        function c()
        {
            echo "c"."</br>";
        }
    }
     
    $class = new MyClass();
    $class->a();
    $class->b();
    $class->c();

    以上代码中,MyAbstract中的function b()也可以放在MyClass中,或者由MyAbstract实现接口MyInterface

    相关学习推荐:PHP编程从入门到精通

    以上就是traits与interfaces有什么区别?的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php traits interfaces
    上一篇:php require_once与include的区别有哪些? 下一篇:php使用swoole的应用场景有哪些?
    第12期线上培训班

    相关文章推荐

    • PHP Traits代码复用方法浅析• php中static、final、interface、abstract的区别• php中的interface是什么意思• php traits的作用有哪些?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网