当前位置: 首页 > 后端技术 > PHP

HowtouseTraits

时间:2023-03-30 00:57:28 PHP

inPHPandLaravel文章转自专业的Laravel开发者社区,原文链接:https://learnku.com/laravel/t...其实PHP作为一个编程语言一是只能使用单继承。这意味着一个类只能继承自另一个类。例如,您可能希望从几个不同的类继承方法以防止代码重复。在PHP5.4中添加了一个新的语言特性,称为Traits,它在Laravel框架中被广泛使用。PHP官网给出了Traits的定义,如下:“Trait是单继承语言(如PHP)中的一种代码重用机制。方法在不同类层次结构下的几个独立类中。Trait的语义组合和类定义减少了一定程度上降低了代码的复杂度,避免了一些典型的多重继承和Mixins相关的问题。Trait和Classes很相似,但它的目的只是为了更好的、一致的聚合一些方法。Trait本身不能被实例化。它使传统继承之外的行为的水平组合,换句话说,类的应用不需要继承。“什么是PHPTraits?Trait只是包含在另一个类中的一组方法。Trait就像一个抽象类,不能单独实例化。Trait的示例如下所示:traitSharePost{publicfunctionshare($item){return'sharethispost';}}然后你可以像这样在其他类中使用Trait:classPost{useSharePost;}classComment{useSharePost;}share()方法:$post=newPost;echo$post->share('');//'分享这篇文章'$comment=newComment;echo$comment->share('');//“分享这篇文章”特性是如何工作的?从上面的例子可以看出,虽然Post和Comment本身没有定义方法,但是它们可以调用share()方法。特征是一种在运行时“复制和粘贴”代码的方法。这意味着Traits被复制到Post和Comment,所以当你实例化一个新的实例时,你可以直接调用share()方法。我定期审查我的代码以及我如何构建新代码,以便将来可以快速构建新功能并轻松启动新项目。那么,如何在laravel中使用traits呢?首先,我在项目的Http目录中创建了一个Traits文件夹,并创建了一个名为BrandsTrait.php的新Trait文件,以便像这样使用它:useApp\Http\Traits\BrandsTrait;classYourControllerextendsController{useBrandsTrait;公共功能addProduct(){$brands=$this->brandsAll();}}这是我的BrandsTrait.php