在 PHP 和 Laravel 中使用 Traits的方法

 更新时间:2019年11月13日 10:20:21   作者:Charlie_Jade  
Trait 是单继承语言(如 PHP )中的一种代码复用机制。这篇文章主要介绍了在 PHP 和 Laravel 中使用 Traits的方法,需要的朋友可以参考下

 

事实上,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

<?php
namespace App\Http\Traits;
use App\Brand;
trait BrandsTrait {
  public function brandsAll() {
    // 从品牌表中获取所有品牌.
    $brands = Brand::all();
    
    return $brands;
  }
}

甚至, 如果您在模型中找到另一种与产品和品牌相互作用有关的通用方法,那么将代码写在该 trait 是个不错的选择。

 总结

以上所述是小编给大家介绍的在 PHP 和 Laravel 中使用 Traits的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • PHP实现两种排课方式

    PHP实现两种排课方式

    这篇文章主要介绍了PHP实现两种排课方式,第一种排课方式比较好理解,开始时间和结束时间,第二种比较复杂一些,有开始上课时间和结束上课时间和第几周,具体实现代码参考下本文
    2021-06-06
  • php实现微信支付之企业付款

    php实现微信支付之企业付款

    这篇文章主要为大家详细介绍了php实现微信支付之企业付款功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • laravel接管Dingo-api和默认的错误处理方式

    laravel接管Dingo-api和默认的错误处理方式

    今天小编就为大家分享一篇laravel接管Dingo-api和默认的错误处理方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • php 多文件上传的实现实例

    php 多文件上传的实现实例

    在php中,实现文件上传时一个很简单的事情,但是如果我们要一次上传多个文件,那又该如何编写代码呢?,需要的朋友可以参考下
    2016-10-10
  • destoon实现首页显示供应、企业、资讯条数的方法

    destoon实现首页显示供应、企业、资讯条数的方法

    这篇文章主要介绍了destoon实现首页显示供应、企业、资讯条数的方法,在模板开发中非常实用,需要的朋友可以参考下
    2014-07-07
  • php读取der格式证书乱码解决方法

    php读取der格式证书乱码解决方法

    这篇文章主要介绍了php读取der格式证书乱码解决方法的相关资料,需要的朋友可以参考下
    2015-06-06
  • PHP网站自动化配置的实现方法(必看)

    PHP网站自动化配置的实现方法(必看)

    下面小编就为大家带来一篇PHP网站自动化配置的实现方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 一个简单安全的PHP验证码类、PHP验证码

    一个简单安全的PHP验证码类、PHP验证码

    这篇文章主要介绍了一个简单安全的PHP验证码类 PHP验证码的相关资料,需要的朋友可以参考下
    2016-09-09
  • php 问卷调查结果统计

    php 问卷调查结果统计

    一个新产品投入市场,要先做问卷调查,考察这个产品在市场的需求量,本篇文章主要跟大家介绍使用php问卷调查结果统计,感兴趣的朋友一起学习吧
    2015-10-10
  • Yii框架批量插入数据扩展类的简单实现方法

    Yii框架批量插入数据扩展类的简单实现方法

    这篇文章主要介绍了Yii框架批量插入数据扩展类的简单实现方法,涉及Yii扩展类及数据库相关操作技巧,需要的朋友可以参考下
    2017-05-05

最新评论