时间:2021-05-26
事实上,PHP 作为一门编程语言存在的问题之一,就是你只能使用单继承。这意味着一个类只能从另一个类中继承。例如,可能希望从几个不同的类继承方法,以防止代码重复。在 PHP 5.4 中 一个新的语言特性被添加进来,这就是众所周知的 Traits,它在 Laravel 框架中被广泛使用。
PHP 官方网站给出了 Traits 的定义,如下:
“ Trait 是单继承语言(如 PHP )中的一种代码复用机制。 Trai 的目的是减少单继承语言的一些限制,能让开发者自由的重用在不同的类层次结构下几个独立类中的方法。 Trait 的语义组合与类的定义在某种程度上减少了代码的复杂度,避免了与多继承和 Mixins 相关的一些典型问题。
Trait 与类非常相似,但它的目的仅仅是用更好、一致的方式汇聚一些方法。 Trait 本身不能被实例化。除了传统继承之外,它能水平组合行为,换言之,类的应用程序不需要继承。”
PHP Traits是什么?
Trait 是一组简单的包含在另一个类中的方法。 Trait 就像一个抽象类一样,无法单独实例化。
一个 Trait 示例就像下面这样:
trait SharePost { public function share($item) { return 'share this post'; }}然后,您可以在其他类中这样使用 Trait :
class Post { use SharePost;}class Comment { use SharePost;}现在,如果您要从这些类中创建新对象,您会发现它们都可以使用 share() 方法:
$post = new Post;echo $post->share(''); // 'share this post' $comment = new Comment;echo $comment->share(''); // 'share this post'Traits 如何工作 ?
从上面例子可以看到, 尽管 Post 和 Comment 本身没有定义方法,但是他们可以调用 share() 方法。
Trait 是运行时 「复制和粘贴」 代码的一种方式.
这意味着 Trait 被复制到 Post and Comment ,因此当你实例化一个新实例, 可以直接调用 share() 方法。
我会定期检查我的代码以及如何构造新代码,目的是为了将来可以快速构建新功能,并且可以轻松的开启新项目。
那么,怎样在laravel中使用traits呢?
首先我在项目的 Http 目录下创建一个Traits文件夹,并且新建了一个名叫 BrandsTrait.php 的Trait文件
使用它就像这样:
use App\Http\Traits\BrandsTrait;class YourController extends Controller { use BrandsTrait; public function addProduct() { $brands = $this->brandsAll(); }}这是我的 BrandsTrait.php
<?phpnamespace App\Http\Traits;use App\Brand;trait BrandsTrait { public function brandsAll() { // 从品牌表中获取所有品牌. $brands = Brand::all(); return $brands; }}甚至, 如果您在模型中找到另一种与产品和品牌相互作用有关的通用方法,那么将代码写在该 trait 是个不错的选择。
总结
以上所述是小编给大家介绍的在 PHP 和 Laravel 中使用 Traits的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
PHP5.4后新增traits实现代码复用机制,Trait和类相似,但不能被实例化,无需继承,只需要在类中使用关键词use引入即可,可引入多个Traits,用'
session使用注意点laravel是一款php框架了,在使用laravel时会碰到session使用问题,工作中使用的是session默认的文件缓存,在使用
简介Blade是Laravel所提供的一个简单且强大的模板引擎。相较于其它知名的PHP模板引擎,Blade并不会限制你必须得在视图中使用PHP代码。所有Blad
本文实例讲述了Laravel框架使用Redis的方法。分享给大家供大家参考,具体如下:安装laravel中使用redis首先需要你通过Composer安装pre
本文PHP基础镜像使用:php:7.3-apache本文Laravel版本为:laravel:5.8.*队列和任务调度我们在下一篇写一、准备我们的Laravel