其丰富的生态系统使 Laravel 框架成为PHP 开发的绝佳选择。
该框架有 15 多个独立扩展,可解决大型复杂应用程序的常见问题。
其中一些非常具体,例如 Laravel Cashier,它为您的项目提供了简单的 Stripe 集成。
其中一些对任何规模和复杂性的项目都很有用,其中一些允许我们构建高性能和可扩展的应用程序。我将在本系列的这一部分中描述这些扩展。
我将从绝对必备品开始。
我相信中高级开发人员应该始终在他们的流程中使用那些您至少有一个外部数据存储和/或公开任何类型的 API 的 API。
Telescope
https://laravel.com/docs/9.x/telescope#introduction
您的应用程序中发生的所有事情都将被记录并显示在这里。这是查找应用程序瓶颈的有用工具。如果你的 API 响应很慢——是数据库问题还是计算问题?该工作电话创建了哪些日志?调度程序在最后 5 分钟内运行了哪些任务?各种信息都可以在这里找到。
一个提示:立即添加 Telescope 修剪作业,以保持调试表更小。
$schedule->command('telescope:prune --hours=48')->daily();
Horizon
https://laravel.com/docs/9.x/horizon#introduction
这需要 Redis 和您的项目比入门模板大一点。Horizon 将异步任务处理添加到您的 Laravel 应用程序中。这使您的 API/网页能够更快地响应,同时将繁重的工作卸载到 Horizon 实例。
必须具有任何异步队列处理,用于您的应用程序中的 WebSockets 集成。
有一个很好的指标特性来发现运行缓慢的异步作业。
现在,我们将为您的 Laravel 项目介绍开发人员生产力插件。
Laravel IDE Helper
https://github.com/barryvdh/laravel-ide-helper
这将创建一个帮助文件来解析所有模型字段,以便 PhpStorm 知道它们。这将为所有神奇的 Eloquent 方法(解析方法和自动完成、参数提示)创建一个帮助描述文件。
推荐的命令:
php artisan ide-helper:model --nowrite
php artisan ide-helper:meta
php artisan ide-helper:generate
添加到您的.gitingore文件中
.phpstorm.meta.php
_ide_helper.php
_ide_helper_models.php
还有一些自动化——添加到您的composer.json 脚本中
每次你运行composer i或composer update – 你的模型都会被刷新。
Larastan
https://github.com/nunomaduro/larastan
为 Laravel 项目设计的静态代码分析工具(在后台使用PhpStan,因此您可以有效地得到两者)。
添加到您的composer.json 脚本
"analyze": ["vendor/bin/phpstan analyse"]
现在运行composer analyze命令将测试您的代码是否存在任何问题。
此命令可以在 CI/CD 周期中运行,以确保具有分布式团队的项目的代码质量。
专业提示:您可以让 PhpStorm 自动分析工作文件并显示任何错误。我们将在下一篇文章中看到如何配置它。
PHP_CodeSniffer
https://github.com/squizlabs/PHP_CodeSniffer
这些工具将帮助您的代码保持选定的标准。在 CI/CD 中使用时,将对项目的开发人员团队强制执行代码标准。
添加到您的composer.json 脚本
"lint": ["vendor/bin/phpcs --parallel=8"],
"lint-fix": ["vendor/bin/phpcbf --parallel=8"],
现在运行composer lint命令将测试您的代码是否违反任何代码标准。
运行composer lint-fix将修复任何可以自动修复的错误。
专业提示:您可以让 PhpStorm 自动分析工作文件并显示任何违反代码标准的情况。我们将在下一篇文章中看到如何配置它。
PHP_CodeSniffer 的 Slevomat 编码标准
https://github.com/slevomat/coding-standard
这个包通过一些自定义规则扩展了 PHP_CodeSniffer,当团队使用具有不同设置的不同 IDE 时,这些规则有助于保持代码井井有条。
您的项目中要么有phpcs.xml,要么可以创建一个。只需将您喜欢的任何内容添加到该文件即可。
例子:
这将清除文件中任何未使用的导入。
<rule ref="SlevomatCodingStandard.Namespaces.UnusedUses">
<properties>
<property name="searchAnnotations" value="true"/>
</properties>
</rule>
报告代码中的无用变量:
<rule ref="SlevomatCodingStandard.Variables.UselessVariable"></rule>
您希望在匿名函数声明周围看到多少空格?
<rule ref="SlevomatCodingStandard.Functions.ArrowFunctionDeclaration">
<properties>
<property name="spacesCountAfterKeyword" value="0"/>
<property name="spacesCountBeforeArrow" value="1"/>
<property name="spacesCountAfterArrow" value="1"/>
<property name="allowMultiLine" value="true"/>
</properties>
</rule>
等等。可用检查的列表非常大。
composer lint和composer lint-fix命令将自动应用新添加的规则。
值得注意的提及将帮助您在发展项目时解决常见问题。
- Nova — 为您的应用程序提供 CRUD 管理员,可使用自定义组件进行扩展。
- Passport / Sanctum — 使用久经考验的标准为您的应用程序提供简单的身份验证流程。Sanctum 适用于简单的应用程序。Passport — 用于复杂的应用程序。
- Socialite — 通过 OAuth 轻松实现社交登录集成。
- Scout — Laravel 的全文搜索解决方案,提供基于驱动程序的解决方案,因此您可以使用本地数据库或外部专业服务来完成它。
奖励 — 用于部署您的应用程序。我看到人们非常努力地在复杂的云基础设施上部署他们最简单的应用程序和 MVP。但是对于初学者来说,这个简单的服务可以带你走很远……
推荐用于首次部署和 MVP、开发人员或没有专门 DevOps 角色的团队。比 AWS + Terraform 或任何其他类型的 CI/CD 自动化便宜得多的解决方案。
Forge
在内部,它可以在预配置的 EC2 服务器(或您可以提供的任何服务器)上运行,但它为 DevOps 新手排除了许多障碍。
如:
- 提供 Nginx 代理服务静态内容,服务 php-fpm 线程
- 简单的php版本切换
- 免费 HTTPS 证书配置和更新
- 为你运行 Laravel 调度器
- 一键式零停机部署
- 为异步工作(和 Redis)运行 Horizon