codeigniter / phpstan-codeigniter
PHPStan 对 CodeIgniter 的扩展和规则
Requires
- php: ^7.4 || ^8.0
- codeigniter4/framework: ^4.4
- phpstan/phpstan: ^1.10
Requires (Dev)
- codeigniter/coding-standard: ^1.7
- codeigniter4/shield: ^1.0@beta
- friendsofphp/php-cs-fixer: ^3.20
- nexusphp/cs-config: ^3.12
- php-parallel-lint/php-parallel-lint: ^1.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^10.2
- rector/rector: ^0.18.2
Conflicts
This package is auto-updated.
Last update: 2024-09-05 03:44:16 UTC
README
此扩展提供以下功能
类型推断
- 为
config()
和model()
函数提供精确的返回类型。 - 为
service()
和single_service()
函数提供精确的返回类型。 - 为
fake()
辅助函数提供精确的返回类型。 - 为
CodeIgniter\Model
的find()
、findAll()
和first()
方法提供精确的返回类型。 - 允许在调用
asArray()
或asObject()
时动态转换CodeIgniter\Model
的返回类型。
规则
- 检查传递给
config()
或model()
函数的字符串参数是否为扩展CodeIgniter\Config\BaseConfig
或CodeIgniter\Model
的有效类字符串。您可以通过在phpstan.neon
中设置codeigniter.checkArgumentTypeOfFactories: false
来关闭此功能。为了更细致的控制,您可以使用codeigniter.checkArgumentTypeOfConfig
和codeigniter.checkArgumentTypeOfModel
分别禁用每个工厂函数。注意:设置codeigniter.checkArgumentTypeOfFactories: false
将有效地绕过这两个特定选项。 - 检查传递给
service()
或single_service()
函数的字符串参数是否为有效的服务名称。您可以通过在phpstan.neon
中设置codeigniter.checkArgumentTypeOfServices: false
来关闭此功能。 - 禁止使用
new
实例化缓存处理器,并建议使用CacheFactory
类。 - 禁止使用
new
实例化FrameworkException
类。 - 禁止直接重新分配或访问
$_SERVER
和$_GET
,并建议使用Superglobals
类。 - 禁止在
config()
和model()
上使用::class
获取,并建议使用类的简写形式。
安装
要使用此扩展,请在 Composer 中要求它
composer require --dev codeigniter/phpstan-codeigniter
如果您还安装了 phpstan/extension-installer,则一切就绪!
手动安装
如果您不想使用 phpstan/extension-installer
,请将 extension.neon 包含在您项目的 PHPStan 配置中
includes: - vendor/codeigniter/phpstan-codeigniter/extension.neon
在此存储库中的开发使用 PHP 8.1+。
从 v1.1.0 版本开始,发布版本包含降级版本以适应较低的 PHP 版本。目前,最低支持的降级 PHP 版本是 PHP 7.4。
配置
此扩展将 config()
和 model()
函数的默认命名空间分别设置为 Config\
和 App\Models\
,在搜索可能的类时使用。如果您的应用程序使用其他命名空间,您可以在 phpstan.neon
中配置此扩展以识别这些命名空间
parameters: codeigniter: additionalConfigNamespaces: - Acme\Blog\Config\ - Foo\Bar\Config\ additionalModelNamespaces: - Acme\Blog\Models\
对于 service()
和 single_service()
函数,您可以指示 PHPStan 考虑您自己的服务工厂类。请注意,它应该是一个扩展 CodeIgniter\Config\BaseService
的有效类!
parameters: codeigniter: additionalServices: - Acme\Blog\Config\ServiceFactory
当传递给 fake()
的模型具有属性 $returnType
设置为 array
时,此扩展将基于模型的允许字段给出精确的数组形状。大多数情况下,格式化的字段是字符串。如果不是字符串,你可以为特定字段指示格式返回类型。
parameters: codeigniter: notStringFormattedFields: # key-value pair of field => format success: bool user_id: int
注意事项
- 与如何加载类相关的工厂函数的行为基于 codeigniter4/framework v4.4。如果你依赖于 < v4.4 的行为,这可能不会满足你的需求。
贡献
欢迎任何贡献。
如果你想看到针对 CodeIgniter 的新规则或特定扩展,请打开一个 功能请求。如果你可以自己贡献代码,请打开一个拉取请求。谢谢!
在报告任何错误之前,请检查错误是否仅在使用此扩展与 PHPStan 的情况下发生。如果错误仅在 PHPStan 中可复现,请在那里打开错误报告。谢谢!
许可证
PHPStan CodeIgniter 是一个开源库,许可协议为 MIT。