PHP中trait的基础语法

小编给大家分享一下PHP中trait的基础语法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

10多年的肥东网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整肥东建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“肥东网站设计”,“肥东网站推广”以来,每个客户项目都认真落实执行。

 类中的某些成员如何才能被其他类使用呢?使用继承的话,这继承链也太长了,php提供了代码复用技术trait。

1.定义Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制。trait可以使得单继承语言拜托为了复用而不得不继承的尴尬,让面向对象变得更加纯粹。

2.基础语法

trait是一种类似class的关键字。

a,"
";         }         public static function getB()         {                echo self::$b,"
";         }     } ?>

trait是用来实现代码的复用的,不可以被实例化也不可以被继承(不是类)。

 3.trait的使用

trait只是一段代码的集合,使用时必须要使用use进行引用。

a,"
";         }         public static function getB()         {                echo self::$b,"
";         }     }          class A{         use Eat;         public function getC()         {             echo $this->a,"
";         }     }     $boy=new A();     $boy->getC();     $boy->getA();     $boy->getB(); ?>

一个类可以使用多个trait。

 4.trait使用的问题

   a.如果同时引入的多个trait中有同名属性,那么会产生冲突。

a;
        }
    }

    $example=new A3();
  

?>

b.如果同时引入的多个trait中有同名方法,那么会产生冲突,有两种方案解决如A3、A4。

";
       }
    }
    trait A2{
       public $b=22;
       public function eat(){
        echo "A2中eat()方法","
";       }     }     class A3{         use A1,A2{           A1::eat insteadOf A2; //A1中的eat替代A2中的eat         }     }     class A4{         use A1,A2{             A1::eat insteadOf A2;//A1中的eat替代A2中的eat             A2::eat as eat2;     //A2中的eat取别名eat2           }     }     $example=new A3();     $example->eat();     $example=new A4();     $example->eat2(); ?>

c.同名覆盖问题:如果类中有与引入的trait同名成员,会有不同处理:

  • 属性:不允许重名,即类中不允许定义与trait中同名的成员属性(静态属性也一样)。

  • 方法:类覆盖trait。

d.继承覆盖问题:如果类中在使用trait的同时,也是继承自父类,而trait中与父类中有同名方法,那么trait中将覆盖父类同名方法;如果要访问父类方法,可以在trait同名方法中使用parent关键字访问父类同名方法。

eat();
?>

e.trait自己不能访问,只是用来给其他类提供代码复用的,因此允许类在使用trait时更高里面方法的访问控制权:在as之后,使用目标访问修饰限定符。

eshow();								//eat
?>

f.trait中可以使用抽象方法,用来规范使用类必须实现对应抽象方法:使用类要么为抽象类,要么就必须实现抽象方法。

以上是“PHP中trait的基础语法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


分享名称:PHP中trait的基础语法
分享链接:http://myzitong.com/article/gedegc.html