PHP Laravel中的Trait使用方法

 更新时间:2019年01月20日 10:59:59   投稿:laozhang  
在本篇文章里小编给各位分享了关于PHP Laravel中的Trait使用方法和相关知识点,有需要的朋友们学习下。

Trait是一种在单继承语言(如PHP)中重用代码的机制。Trait旨在通过使开发人员能够在生活在不同类层次结构中的多个独立类中自由地重用方法集来减少单继承的某些限制。Traits和类组合的语义以降低复杂性的方式定义,并避免了与多重继承和Mixins相关的典型问题。

Trait类似于类,但仅用于以细粒度和一致的方式对功能进行分组。无法自行实例化Trait。它是对传统继承的补充,可以实现行为的横向组合; 也就是说,类成员的应用程序不需要继承。

什么是PHP Trait?

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(''); 

 

$comment = new Comment;

echo $comment->share('');

trait 如何运作?

从上面的示例中可以看出,尽管没有定义该方法,但是对象Post和Comment对象都具有share()可用的方法。

Trait基本上只是一种在运行时“复制和粘贴”代码的方法。

这意味着Trait被复制到Post和Comment类中,因此当您实例化一个新实例时,share()方法代码将可用。

我经常检查我的代码以及如何构建我的代码,以便可以快速完成未来的功能添加,并且新项目可以轻松扩展以前的想法。

如何在laravel中使用trait ?

我在我的Http目录中创建了一个Trait目录,其中有一个名为的TraitBrandsTrait.php

use App\Http\Traits\BrandsTrait;

class YourController extends Controller {

  use BrandsTrait;

  public function addProduct() {

    $brands = $this->brandsAll();

  }

}

这是我的BrandsTrait.php

<?php

namespace App\Http\Traits;use App\Brand;

trait BrandsTrait {

  public function brandsAll() {

    // 从品牌表中获取所有品牌

    $brands = Brand::all();    return $brands;

  }

}

相关文章

  • 解决PhpStorm64不能启动的问题

    解决PhpStorm64不能启动的问题

    这篇文章主要介绍了解决PhpStorm64不能启动的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • php传值方式和ajax的验证功能

    php传值方式和ajax的验证功能

    这篇文章给大家介绍了php前台传值到后台进行验证的三种方式,以及ajax的验证功能,需要的朋友一起学习吧
    2017-03-03
  • 使用gd库实现php服务端图片裁剪和生成缩略图功能分享

    使用gd库实现php服务端图片裁剪和生成缩略图功能分享

    一般用户上传头像时,都会让用户自行裁剪图片。那么php怎么实现这个功能呢?php中裁剪图片主要使用gd库的imagecopyresampled方法
    2013-12-12
  • CodeIgniter基于Email类发邮件的方法

    CodeIgniter基于Email类发邮件的方法

    这篇文章主要介绍了CodeIgniter基于Email类发邮件的方法,结合实例形式分析了CodeIgniter调用CI自带的Email类实现发送邮件的相关使用技巧,需要的朋友可以参考下
    2016-03-03
  • yii的CURD操作实例详解

    yii的CURD操作实例详解

    这篇文章主要介绍了yii的CURD操作技巧,以实例形式详细分析了基于yii框架的增删改查的具体用法,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • php图片水印添加、压缩、剪切的封装类实现

    php图片水印添加、压缩、剪切的封装类实现

    这篇文章主要介绍了php图片水印添加,压缩,剪切的封装类实现方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-09-09
  • php 无限分类 树形数据格式化代码

    php 无限分类 树形数据格式化代码

    这篇文章主要介绍了php 无限分类 树形数据格式化代码,需要的朋友可以参考下
    2016-10-10
  • phpmailer中文乱码问题的解决方法

    phpmailer中文乱码问题的解决方法

    这篇文章主要介绍了phpmailer中文乱码问题的解决方法,需要的朋友可以参考下
    2014-04-04
  • PHP中的Memcache详解

    PHP中的Memcache详解

    这篇文章主要介绍了PHP中的Memcache,从Memcache简介开始,详细讲解了如Memcache和memcached的区别、PHP的Memcache所有操作方法、每个操作方法的详细解释等,需要的朋友可以参考下
    2014-04-04
  • PHP实现WebSocket实例详解

    PHP实现WebSocket实例详解

    这篇文章主要介绍了PHP实现WebSocket实例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09

最新评论