larastrict / conventions
LaraStrict conventions for your Laravel apps - PHPStan, Easy Coding Standard, RectorPHP and appropriate rules.
Requires
- php: >=8.1
- larastan/larastan: ^v2.9.2
- strictphp/conventions: ^v1.0.0
Requires (Dev)
- orchestra/testbench: ^v8 | ^v9
README
使用LaraStrict约定增强您的Laravel应用程序的健壮性和一致性。此包集成了PHPStan、Easy Coding Standard、RectorPHP和定制规则等基本工具,以简化您的开发过程。
此包扩展了 StrictPHP约定。
主要功能
此包捆绑了一组强大的工具和配置,以支持您的开发工作流程
- PHPStan配置和自定义规则:集成了PHPStan,并提供了针对我们项目的预定义配置和规则。
- Easy Coding Standard配置:利用Easy Coding Standard来强制执行一致的编码风格和实践。
- PHPUnit 10/11支持:确保与PHPUnit的兼容性,以便进行全面测试。
- RectorPHP配置:提供RectorPHP的配置,以改善代码质量。
- 扩展PHPStan包:包括额外的包以增强PHPStan的功能。有关更多详细信息,请参阅包含的
composer.json
文件。
先决条件
在安装之前,请确保您的环境满足以下要求
- PHP版本8.1或更高(根据您的Laravel版本)。
- Composer
- Laravel 10+
- 启用PHPStan扩展安装程序,该安装程序将由我们的包自动安装,以允许扩展发现。
仅维护此包的最新主要版本。
安装
要将LaraStrict Conventions集成到您的项目中,请在您的终端中运行以下命令
composer require larastrict/conventions --dev
这将把包作为开发依赖项安装。在安装过程中,您将收到提示确认安装插件
您是否信任 "phpstan/extension-installer" 执行代码并希望现在启用它?(yes/no) [y]
输入 y
以使用所有提供的扩展。
入门指南
安装后,您可以根据项目需求调整提供的配置。
设置Easy Coding Standard
要使用Easy Coding Standard,请在您的项目根目录中创建或更新一个ecs.php
文件,并按照以下设置进行操作
<?php declare(strict_types=1); use Symplify\EasyCodingStandard\Config\ECSConfig; return ECSConfig::configure() ->withRootFiles() ->withPaths([ __DIR__ . '/src', __DIR__ . '/tests', ]) // This is required to include the StrictPHP Conventions ->withSets([\LaraStrict\Conventions\ExtensionFiles::Ecs]);
查看extension-ecs.php以查看包含的内容
- 不要在blade文件上运行ecs。
配置RectorPHP
要集成RectorPHP,请添加或更新一个位于项目根目录的rector.php
文件,并使用以下配置
<?php declare(strict_types=1); use Rector\Config\RectorConfig; return RectorConfig::configure() ->withRootFiles() ->withPaths([ __DIR__ . '/src', __DIR__ . '/tests', ]) // This is required to include the StrictPHP Conventions ->withSets([\LaraStrict\Conventions\ExtensionFiles::Rector]);
查看extension-rector.php以查看包含的内容
- 防止rector更改路由中的可调用。
- 不要在blade文件上运行rector。
集成PHPStan
请确保您使用PHPStan扩展安装程序安装所需的扩展。
PHPStan配置
您可能需要添加一个phpstan.neon
并忽略此错误
parameters: ignoreErrors: - identifier: missingType.iterableValue
规则
此包包括以下规则
UsableInContainerRule
自定义功能尚未启用。目前已禁用
此包包括确保DI类/契约被适当使用的规则
- 确保合约可注入:检查是否有实现已注册该合约。
- 确保类可注入:检查已注册的类是否有可注入的依赖。
您可以根据需要自定义这些设置。示例配置
services: - class: LaraStrict\Conventions\PHPStan\UsableInContainerRule tags: [phpstan.rules.rule] arguments: enabled: true # Ensure that classes that extends these classes are injectable extends: - Illuminate\Console\Command - Illuminate\Database\Seeder # Do not check if classes that has these suffixes are injectable excludeSuffixes: - MySuffix # Check classes in these namespaces namespaces: - \DIClasses\ # Do not check if classes file contains these folders excludeFolders: - my_folder
默认设置可以在 ./extension.neon 文件中找到
致谢
本项目的存在得益于多个其他有影响力的项目的慷慨支持
- Canvastera - 帮助用户制作多媒体海报并在全球范围内分享。(教育/爱好)
- Azzurro 旅行社 - 专注于意大利度假。
- Redtag Studio - 打造让您享受的数字产品。
探索更多我们的开源计划
- Larastrict - 通过一系列方便的工具和包增强 Laravel 框架。
- StrictPHP - 通过精心挑选的包和约定,在 PHP 项目中实现严格性,促进健壮生产级应用程序的开发。
- WrkFlow - 通过一套旨在提高效率的工具简化开发工作流程。
许可证
开源软件,根据 MIT 许可证 许可。您可以自由使用和修改以满足您的需求。