This extension provides the following features:
config()
and model()
functions.service()
and single_service()
functions.fake()
helper function.CodeIgniter\Model
's find()
, findAll()
, and first()
methods.CodeIgniter\Model
when asArray()
or asObject()
is called.config()
or model()
function is a valid class string extending
CodeIgniter\Config\BaseConfig
or CodeIgniter\Model
, respectively. This can be turned off by setting
codeigniter.checkArgumentTypeOfFactories: false
in your phpstan.neon
. For fine-grained control, you can
individually choose which factory function to disable using codeigniter.checkArgumentTypeOfConfig
and
codeigniter.checkArgumentTypeOfModel
. NOTE: Setting codeigniter.checkArgumentTypeOfFactories: false
will effectively
bypass the two specific options.service()
or single_service()
function is a valid service name. This can be turned off by setting codeigniter.checkArgumentTypeOfServices: false
in your phpstan.neon
.new
and suggests to use the CacheFactory
class instead.FrameworkException
classes using new
.$_SERVER
and $_GET
and suggests to use the Superglobals
class instead.::class
fetch on config()
and model()
and suggests to use the short form of the class instead.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!
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.
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
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!
PHPStan CodeIgniter is an open source library licensed under MIT.