在 PHP 和 Laravel 中使用 Traits的方法
发布:smiling 来源: PHP粉丝网 添加日期:2022-01-22 14:12:07 浏览: 评论:0
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 是个不错的选择。
Tags: Laravel Traits
- 上一篇:php 多个变量指向同一个引用($b = &$a)用法分析
- 下一篇:最后一页
相关文章
- ·搭建php Laravel框架教程详解(2017-03-23)
- ·Laravel执行migrate操作提示”Class not found”怎么解决(2017-03-23)
- ·Laravel 集成 Geetest验证码的方法(2018-06-11)
- ·laravel5.2实现区分前后台用户登录的方法(2018-06-19)
- ·Laravel怎么实现表单提交(2018-08-03)
- ·深入解析PHP的Laravel框架中的event事件操作(2019-11-14)
- ·如何在Laravel中重命名数据库表(2019-12-31)
- ·如何设置Laravel Composer Bin目录路径(2019-12-31)
- ·如何使用hash check来检查当前密码?(Laravel 5.3中)(2020-02-07)
- ·PHP开发框架Laravel数据库操作方法总结(2021-04-10)
- ·详解PHP的Laravel框架中Eloquent对象关系映射使用(2021-07-12)
- ·使用 laravel sms 构建短信验证码发送校验功能(2021-08-18)
- ·三个思路解决laravel上传文件报错:413 Request Entity Too Large问题(2021-08-19)
- ·利用Homestead快速运行一个Laravel项目的方法详解(2021-08-19)
- ·Laravel核心解读之异常处理的实践过程(2021-11-10)
- ·解决在Laravel 中处理OPTIONS请求的问题(2022-01-01)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)