记录一些常用插件
livewire/livewire
Livewire 是 Laravel 的全栈框架,可简化构建动态接口的过程,且不会为 Laravel 带来不必要的麻烦。
一个开发利器,见文档
https://github.com/livewire/livewire
Eloquent 条件查询 ——tucker-eric/eloquentfilter
- 搜索是每个项目中必不可少的功能,我们需要通过不同的请求数据,筛选出想要的数据,有时候你会发现查询条件很多的时候,Controller 中的代码会越来越多,你可能会想优化一下这部分逻辑,tucker-eric/eloquentfilter 就是这样一个扩展包,帮助我们优化搜索这部分逻辑。
https://github.com/Tucker-Eric/EloquentFilter
逆向 Seed 生成器 ——orangehill/iseed#
- 这一节我们来了解一下 orangehill/iseed 这个扩展包,单看描述可能不太理解这个包的作用,它是一个逆向的 Seed 文件生成器,也就是根据数据库中已存在的数据,帮助我们生成 Seed 文件。
- 这个扩展包的作用是将数据库中的数据通过 Seed 文件导出,方便我们再次将数据导回数据库。比起我们直接从数据库导出 sql 文件,orangehill/iseed 帮助我们生成了 Seed 文件,这样我们可以进行修改,并提交到代码仓库中,维护性得到了大大的提高。
https://github.com/orangehill/iseed
为你的项目增加漂亮的 Markdown 文档 ——binarytorch/larecipe
- 扩展包 binarytorch/larecipe 是一个非常棒的工具,能帮助我们快速的生成一个功能完备而且非常漂亮的 Markdown 文档。
https://github.com/saleem-hadad/larecipe
角色权限控制组件 —— spatie/laravel-permission
我们常说的 RBAC 就是基于角色的权限访问控制(Role-Based Access Control),我们会利用用户,角色和权限的关系,决定用户能做什么事,不能做什么事。在 RBAC 我们首先需要了解:
- 用户(User)—— 拥有角色的主体;
- 角色(Role)—— 一定数量的权限的集合;
- 权限 (Permission)—— 是否可以做具体的某个操作。
具体的权限是判断是否能做某件事的决定因素,一个角色可以拥有多个权限,角色和权限之间是多对多的关系。给用户赋予某个角色,用户就可以得到角色拥有的所有权限,用户就可以干某件事,同样用户与角色也是多对多的关系。总结一下就是用户可以有多个角色,角色可以有多个权限,用户的任意一个角色中拥有某个权限,他就可以做这个权限对应的事。
https://github.com/spatie/laravel-permission
应用自我诊断测试 —— beyondcode/laravel-self-diagnosis
当我们搭建或者部署一个新项目的时候,比如
- 新同事加入进来进行开发;
- 搭建一个测试环境;
- 项目上线进行环境部署。
无论我们通过何种方式搭建一个新的项目,都需要进行一些测试,确保环境是正确的,包括数据库是否配置正确,Redis 是否链接正确,目录权限是否正确,PHP 扩展是否都已经安装等等。凭借经验以及必要的测试,保证项目的环境正确可用。
https://github.com/beyondcode/laravel-self-diagnosis
Excel 处理工具 ——maatwebsite/excel (3.0 版本)
- maatwebsite/excel 是一个帮助我们方便的处理 excel 的扩展包,在 Github 中的项目名称为 Laravel Excel
https://github.com/Maatwebsite/Laravel-Excel
嵌套集合模型 ——kalnoy/nestedset
- 套集合模型 (Nested set model) ,它是一种在关系型数据库中表示嵌套集合的特殊技术。
https://github.com/lazychaser/laravel-nestedset
数据查询缓存 ——watson/rememberable
- 数据是每个系统中都十分必要的,适当的增加缓存可以缓解数据库查询的压力,watson/rememberable 就是这样一个可以方便 Eloquent 模型缓存的扩展包。
https://github.com/dwightwatson/rememberable
数据库管理工具 ——protoqol/prequel
github.com/Protoqol/Prequel 是一个 数据库管理工具,可以用来替代 phpMyAdmin,界面非常的简洁,设计是基于 Laravel Telescope 。
http://github.com/Protoqol/Prequel
代码生成工具 ——codedungeon/laravel-craftsman
Laravel Craftsman 是一个命令行工具,帮助我们快速生成基础的项目代码。
https://github.com/mikeerickson/laravel-craftsman
解析项目中的 Composer 依赖 ——lubusin/laravel-decomposer
扩展包 lubusin/laravel-decomposer 可以解析已安装的软件包及其相关的依赖,功能非常简单,但是很实用。
https://github.com/lubusIN/laravel-decomposer
翻译辅助工具 ——barryvdh/laravel-translation-manager
如果你的项目是一个国际化的项目,需要切换不同的语言环境,那么翻译就是十分重要的一个功能了。翻译一直是一件麻烦的事情,需要编辑不同的语言文件,准备好对应的翻译,今天要介绍的扩展包 barryvdh/laravel-translation-manager 或许能让你的翻译工作变得更加轻松。
https://github.com/barryvdh/laravel-translation-manager
Laravel 本地化功能增强,切换项目语言 ——mcamara/laravel-localization
对于一个多国语言的项目,切换语言是一个很重要的功能
https://github.com/mcamara/laravel-localization
获取国家详细信息 —— rinvex/countries
rinvex/countries 是一个获取国家详细信息的扩展包,包括了国家名称,国家代码,国际拨号代码,货币,语言,国家边界等等信息。如果正在做一个国际化的项目,如果没有这个扩展包,很可能需要自己维护一个国家信息的数据库,涉及到各种 ISO 标准,以及数据的更新,其实是很麻烦的。
这个扩展包十分的轻量,不依赖任何的其他的扩展包,只是要求 PHP 版本大于 7,数据都是通过 Json 保存在本地,查看一下扩展包的介绍 github.com/rinvex/countries#data-s... ,它的数据也是来自于一些开源的项目,还是提供了非常多的方法获取我们需要的信息
https://github.com/rinvex/countries
定时任务 Web 控制台 —— studio/laravel-totem
在 Laravel 配置定时任务其实是很简单的,只需要将任务配置在 app/Console/Kernel.php 中就可以了。今天的这个扩展包 studio/laravel-totem 会让定时任务的管理和使用变得更加的方便,它提供了一个定时任务的 Web 控制台:
- 可以查看项目中有哪些计划任务;
- 获取任务下次执行的时间;
- 可以手动执行计划任务;
- 能够快速的通过 Web 界面 添加 / 修改 / 删除定时任务;
- 统计记录定时任务的执行情况。
https://github.com/codestudiohq/laravel-totem
API 动态查询参数 —— spatie/laravel-query-builder
我们都会希望自己的接口足够灵活,以满足客户端不同的需求,所以一般都会实现这么几个功能:
让接口嵌套返回额外的资源,需要提供 include 参数,如果你学过第三本教程一定比较熟悉;为了对数据进行过滤,会提供 filter 参数;满足排序的需求,会提供 sort 参数;只返回客户端需要的字段,可以提供 fields 参数等等。
spatie/laravel-query-builder 这个扩展包依然是来自我们熟悉的组织 spatie,主要的作用就是为接口提供上面的这几个功能。
https://github.com/spatie/laravel-query-builder
Markdown 解析器 ——graham-campbell/markdown
将 Markdown 渲染成 HTML 是很常见的需求,解析器也很多,今天介绍的这个是一个下载量比较高的扩展包 graham-campbell/markdown,看它的说明知道它是一个 CommonMark 的封装,CommonMark 是一个 Markdown 的规范,依赖了扩展包 league/commonmark。
在 Laravel 中使用这个扩展包非常的方便
https://github.com/GrahamCampbell/Laravel-Markdown
项目代码统计 ——wnx/laravel-stats
今天介绍的这个扩展包 github.com/stefanzweifel/laravel-stats 是用来做代码统计的,它可以帮助我们分析整个项目的每个功能使用了多少个类,方法,写了多少行等等,扩展包能直观的展示出代码的统计结果,方便我们发现问题,做接下来的代码优化。
https://github.com/stefanzweifel/laravel-stats
模块化管理工具 ——nwidart/Laravel-modules
当我们开发大型项目的时候,经常需要进行一些模块化的功能划分,这样能让代码更加的清晰,也方便维护。那么模块化开发比较好用的工具就是今天这个扩展包 github.com/nWidart/laravel-modules
https://github.com/nWidart/laravel-modules
快速创建 enum 枚举类 —— bensampo/laravel-enum
对于模型中的各种状态,类型等数据,需要提前进行定义,方便之后的逻辑判断。你可能会直接使用 mysql 的 enum 枚举字段,或者是在模型中定义 STATUS_PAID 这样的常量来定义各种状态,然后再定义一个 map 属性,给常量添加对应的描述。
https://github.com/BenSampo/laravel-enum
利用隐藏输入框诱捕灌水机 ——spatie/laravel-honeypot
有时候会有一些灌水机在项目中提交一些垃圾信息以及广告,大部分的灌水机其实并不智能,只是识别页面中的表单,然后填充,并尝试提交,所以添加一个隐藏的输入框,让灌水机填充,只要填充了内容,我们就认为这不是一个正常的操作,做一些过滤就可以了。
利用今天的这个扩展包,github.com/spatie/laravel-honeypot 实现起来其实非常简单,这个扩展包也是来自我们熟悉的组织 spatie。
https://github.com/spatie/laravel-honeypot
让验证规则可以复用 —— illuminatech/validation-composite
illuminatech/validation-composite 是一个可以让验证规则可以复用的扩展包。
https://github.com/illuminatech/validation-composite
在 Blade 模板中使用过滤器 Filters —— thepinecode/blade-filters
也许你使用过其他语言的模板引擎,会有过滤器这样的功能,那在 Laravel 的 Blade 中想要使用类似的功能,可以使用这个扩展包。
github.com/thepinecode/blade-filters