• 售前

  • 售后

热门帖子
入门百科

PHP Laravel中的Trait使用方法

[复制链接]
御风而行2017 显示全部楼层 发表于 2021-10-26 14:06:41 |阅读模式 打印 上一主题 下一主题
Trait是一种在单继承语言(如PHP)中重用代码的机制。Trait旨在通过使开辟职员可以大概在生活在差异类条理布局中的多个独立类中自由地重用方法集来减少单继承的某些限定。Traits和类组合的语义以低沉复杂性的方式界说,并制止了与多重继承和Mixins相关的典型标题。
Trait类似于类,但仅用于以细粒度和划一的方式对功能进行分组。无法自行实例化Trait。它是对传统继承的增补,可以实现行为的横向组合; 也就是说,类成员的应用步伐不须要继承。
什么是PHP Trait?
Trait仅仅是您渴望包含在另一个类中的一组方法。与抽象类一样,Trait不能自己实例化。
Trait的一个例子可以是:
  1. trait SharePost {
  2. public function share($item)
  3. {
  4.   return 'share this post';
  5. }
  6. }
复制代码
然后你可以把这个trait 包含在其他类中,就像如许:
  1. class Post {
  2. use SharePost;
  3. }
  4. class Comment {
  5. use SharePost;
  6. }
复制代码
现在,如果要从这些类中创建新对象,您会发现它们都有share()方法可用:
  1. $post = new Post;
  2. echo $post->share('');
  3. $comment = new Comment;
  4. echo $comment->share('');
复制代码
trait 怎样运作?
从上面的示例中可以看出,只管没有界说该方法,但是对象Post和Comment对象都具有share()可用的方法。
Trait根本上只是一种在运行时“复制和粘贴”代码的方法。
这意味着Trait被复制到Post和Comment类中,因此当您实例化一个新实例时,share()方法代码将可用。
我经常检查我的代码以及怎样构建我的代码,以便可以快速完成将来的功能添加,并且新项目可以轻松扩展以前的想法。
如安在laravel中利用trait ?
我在我的Http目录中创建了一个Trait目录,其中有一个名为的TraitBrandsTrait.php
  1. use App\Http\Traits\BrandsTrait;
  2. class YourController extends Controller {
  3.   use BrandsTrait;
  4.   public function addProduct() {
  5.     $brands = $this->brandsAll();
  6.   }
  7. }
复制代码
这是我的BrandsTrait.php
  1. <?php
  2. namespace App\Http\Traits;use App\Brand;
  3. trait BrandsTrait {
  4.   public function brandsAll() {
  5.     // 从品牌表中获取所有品牌
  6.     $brands = Brand::all();    return $brands;
  7.   }
  8. }
复制代码

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作