CodeIgniter / phpstan-codeigniter

CodeIgniter extensions and rules for PHPStan
https://codeigniter.com/
MIT License
15 stars 0 forks source link
codeigniter codeigniter4 php phpstan-extension static-analysis

CodeIgniter extensions and rules for PHPStan

Extension Tests Coding Standards Check PHPStan Static Analysis

This extension provides the following features:

Type Inference

Rules

Installation

To use this extension, require it in Composer:

composer require --dev codeigniter/phpstan-codeigniter

If you also install phpstan/extension-installer then you're all set!

Manual installation If you don't want to use `phpstan/extension-installer`, include extension.neon in your project's PHPStan config: ```yml includes: - vendor/codeigniter/phpstan-codeigniter/extension.neon ```

Development in this repository uses PHP 8.1+.

Starting v1.1.0, releases come with a downgraded version to suit lower PHP versions. Currently, lowest supported downgraded PHP version is PHP 7.4.

Configuration

This extension adds the default namespace for config() and model() functions as Config\ and App\Models\, respectively, when searching for possible classes. If your application uses other namespaces, you can configure this extension in your phpstan.neon to recognize those namespaces:

parameters:
  codeigniter:
    additionalConfigNamespaces:
      - Acme\Blog\Config\
      - Foo\Bar\Config\
    additionalModelNamespaces:
      - Acme\Blog\Models\

For the service() and single_service() functions, you can instruct PHPStan to consider your own services factory classes. Please note that it should be a valid class extending CodeIgniter\Config\BaseService!

parameters:
  codeigniter:
    additionalServices:
      - Acme\Blog\Config\ServiceFactory

When the model passed to fake() has the property $returnType set to array, this extension will give a precise array shape based on the allowed fields of the model. Most of the time, the formatted fields are strings. If not a string, you can indicate the format return type for the particular field.

parameters:
  codeigniter:
    notStringFormattedFields: # key-value pair of field => format
      success: bool
      user_id: int

Caveats

  1. The behavior of factories functions relative to how they load classes is based on codeigniter4/framework v4.4. If you are relying on the behavior of < v4.4, this may not work out for you.

Contributing

Any contributions are welcome.

If you want to see a new rule or extension specific to CodeIgniter, please open a feature request. If you can contribute the code yourself, please open a pull request instead.

Before reporting any bugs, please check if the bug occurs only if using this extension with PHPStan. If the bug is reproducible in PHPStan alone, please open a bug report there instead. Thank you!

License

PHPStan CodeIgniter is an open source library licensed under MIT.