php的trait使用方法

Author Avatar
yyq 2020-12-03 16:52:27
  • 二维码

php的trait使用方法

        php的新特性trait,为什么要使用它:

            开发人员能够自由地在不同层次结构内独立的类中复用 method,在一定程度上弥补了单继承语言在某些情况下代码不能复用的问题。


        NO1:trait类与普通类对比:

                    

            相同:

      1. trait 能够像普通的类一样定义属性,方法(包含抽象的、静态的、抽象的);

      2. trait 引入到基类里面,其子类里面也能访问trait里面的属性和方法。

            不同:

      1. trait不用实例化就能访问定义的普通方法以及属性。

      2. trait里面不能定义构造函数


        NO2:使用方法,定义一个trait类及方法,再其他内引用:

            trait testTrait{

                public function traitTest(){

                    return 'this is trait test';

                }

            }


            class myTest{

                use testTrait;

            }

            

        NO3:调用

            $mobj = new myTest();

            echo $mobj->traitTest();


        NO4:一个类可以引用多个trait,所以可能出现相同的函数名,解决方法如下:

            

            trait testTrait{

                public function traitTest(){

                    return 'this is trait test';

                }

            }


            trait testTrait1{

                public function traitTest(){

                    return 'this is trait test1';

                }

            }


            class myTest{

                use testTrait, testTrait1{

                    testTrait1::traitTest insteadof testTrait; //insteadof关键词指定使用冲突方法中的哪一个

                    testTrait1::traitTest as traitTest1; //同方法名的trait设置别名

                };

            }

            //调用

            $mobj = new myTest();

            echo $mobj->traitTest1(); //输出"this is trait test1"


        NO5:tp框架引入操作,将trait类Traittest1文件放入thinkphp\library\traits\controller下,其他类文件引入及调用方法如下:

        use \traits\controller\Traittest1;

       //测试trait
       function testTrait(){
           echo $this->testTrait1();
       }


上一篇 返回列表 下一篇

发表评论

Tips:评论内容请文明用语