PHP Laravel中的Trait使用方法
时间:2022-07-27
本文章向大家介绍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 AppHttpTraitsBrandsTrait;
class YourController extends Controller {
use BrandsTrait;
public function addProduct() {
$brands = $this- brandsAll();
}
}
这是我的BrandsTrait.php
<?php
namespace AppHttpTraits;use AppBrand;
trait BrandsTrait {
public function brandsAll() {
// 从品牌表中获取所有品牌
$brands = Brand::all(); return $brands;
}
}
- ECMAScript 6 入门简介
- RxJava2 实战知识梳理(2) - 计算一段时间内数据的平均值
- 用了Docker,妈妈再也不担心我的软件安装了 - 基础篇
- 适配器模式(Adapter)
- 敞开的地狱之门:Kerberos协议的滥用
- CY7C68013A的一点总结
- RxJava2 实战(1) - 后台执行耗时操作,实时通知 UI 更新
- AutoIt木马又一发:暗藏神秘照片
- css3动画从入门到精通
- ReactJs和React Native的那些事
- Linux学习-文件排序和FASTA文件操作
- Bash漏洞再次演进:缓冲区溢出导致远程任意命令执行
- Pandas,让Python像R一样处理数据,但快
- ViewPager 实现 Galler 效果, 中间大图显示,两边小图展示
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 一些有意思的JavaScript代码片段
- Flutter 完成全平台制霸:实现 Windows 应用支持
- python包:urllib——使用urllib下载无限制链接图片
- 初探 TensorFlow.js
- 如何使用 Apache Directory Studio 连接 JumpCloud
- 0812-5.16.2-如何获取CDSW上提交Spark作业的真实用户
- GLMM:广义线性混合模型(遗传参数评估)
- 特征锦囊:今天一起搞懂机器学习里的L1与L2正则化
- 【一天一大 lee】二叉搜索树的最近公共祖先 (难度:简单) - Day2020092
- Spring多数据源事务如何玩? | Spring系列46篇
- 使用Mfuzz包做时间序列分析
- 网络安全 | 瑞哥带你全方位解读防火墙技术!
- 【SpringBoot DB 系列】Jooq 之新增记录使用姿势
- 突击并发编程JUC系列-并发工具 Semaphore
- 构建Linux根文件系统