codeigniter/phpstan-codeigniter

PHPStan 对 CodeIgniter 的扩展和规则

安装次数: 179,698

依赖项: 15

建议者: 0

安全性: 0

星标: 15

关注者: 6

分支: 0

开放性问题: 6

类型:phpstan-extension

v1.4.3.70400 2023-12-21 05:10 UTC

README

Extension Tests Coding Standards Check PHPStan Static Analysis

此扩展提供以下功能

类型推断

  • config()model() 函数提供精确的返回类型。
  • service()single_service() 函数提供精确的返回类型。
  • fake() 辅助函数提供精确的返回类型。
  • CodeIgniter\Modelfind()findAll()first() 方法提供精确的返回类型。
  • 允许在调用 asArray()asObject() 时动态转换 CodeIgniter\Model 的返回类型。

规则

  • 检查传递给 config()model() 函数的字符串参数是否为扩展 CodeIgniter\Config\BaseConfigCodeIgniter\Model 的有效类字符串。您可以通过在 phpstan.neon 中设置 codeigniter.checkArgumentTypeOfFactories: false 来关闭此功能。为了更细致的控制,您可以使用 codeigniter.checkArgumentTypeOfConfigcodeigniter.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

注意事项

  1. 与如何加载类相关的工厂函数的行为基于 codeigniter4/framework v4.4。如果你依赖于 < v4.4 的行为,这可能不会满足你的需求。

贡献

欢迎任何贡献。

如果你想看到针对 CodeIgniter 的新规则或特定扩展,请打开一个 功能请求。如果你可以自己贡献代码,请打开一个拉取请求。谢谢!

在报告任何错误之前,请检查错误是否仅在使用此扩展与 PHPStan 的情况下发生。如果错误仅在 PHPStan 中可复现,请在那里打开错误报告。谢谢!

许可证

PHPStan CodeIgniter 是一个开源库,许可协议为 MIT