在 PHP 和 Laravel 中使用 Traits的方法
事实上,PHP作为一门编程语言存在的问题之一,就是你只能使用单继承。这意味着一个类只能从另一个类中继承。例如,可能希望从几个不同的类继承方法,以防止代码重复。在PHP5.4中一个新的语言特性被添加进来,这就是众所周知的Traits,它在Laravel框架中被广泛使用。
PHP官方网站给出了Traits的定义,如下:
“Trait是单继承语言(如PHP)中的一种代码复用机制。Trai的目的是减少单继承语言的一些限制,能让开发者自由的重用在不同的类层次结构下几个独立类中的方法。Trait的语义组合与类的定义在某种程度上减少了代码的复杂度,避免了与多继承和Mixins相关的一些典型问题。
Trait与类非常相似,但它的目的仅仅是用更好、一致的方式汇聚一些方法。Trait本身不能被实例化。除了传统继承之外,它能水平组合行为,换言之,类的应用程序不需要继承。”
PHPTraits是什么?
Trait是一组简单的包含在另一个类中的方法。Trait就像一个抽象类一样,无法单独实例化。
一个Trait示例就像下面这样:
traitSharePost{ publicfunctionshare($item) { return'sharethispost'; } }
然后,您可以在其他类中这样使用Trait:
classPost{ useSharePost; } classComment{ useSharePost; }
现在,如果您要从这些类中创建新对象,您会发现它们都可以使用share()方法:
$post=newPost; echo$post->share('');//'sharethispost' $comment=newComment; echo$comment->share('');//'sharethispost'
Traits如何工作?
从上面例子可以看到,尽管Post和 Comment本身没有定义方法,但是他们可以调用 share()方法。
Trait是运行时「复制和粘贴」代码的一种方式.
这意味着Trait被复制到Postand Comment,因此当你实例化一个新实例,可以直接调用share()方法。
我会定期检查我的代码以及如何构造新代码,目的是为了将来可以快速构建新功能,并且可以轻松的开启新项目。
那么,怎样在laravel中使用traits呢?
首先我在项目的Http目录下创建一个Traits文件夹,并且新建了一个名叫BrandsTrait.php的Trait文件
使用它就像这样:
useApp\Http\Traits\BrandsTrait; classYourControllerextendsController{ useBrandsTrait; publicfunctionaddProduct(){ $brands=$this->brandsAll(); } }
这是我的BrandsTrait.php
甚至,如果您在模型中找到另一种与产品和品牌相互作用有关的通用方法,那么将代码写在该trait是个不错的选择。
总结
以上所述是小编给大家介绍的在PHP和Laravel中使用Traits的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。