Releases: CodeIgniter/phpstan-codeigniter
v2.1.0
What's Changed
Added
- Type asObject-fetched entities by the producing model's casts
Full Changelog: v2.0.1...v2.1.0
v2.0.1
What's Changed
Fixed
- Apply the model's casts to entity property types
Full Changelog: v2.0.0...v2.0.1
v2.0.0
Highlights
This release is a ground-up rewrite of the extension. The headline feature is Model and Entity type inference driven by your real database schema: the extension materializes your schema by running your migrations against a temporary SQLite database, then uses it to type your models, entities, and fetched rows.
Important
This is a major release with breaking changes. Read the Upgrade Guide before upgrading.
Requirements
- PHP
^8.2 - PHPStan
^2.2 - CodeIgniter 4
^4.7 - The
sqlite3PHP extension (new, powers the schema layer)
What's new
Model and Entity type inference
Resolved from your live schema instead of heuristics (closes #17, #19, #25):
Model::find(),findAll(),first(), andfindColumn()return the precise row type for the model's$returnType(an entity, a shapedarray{...}of columns, or astdClass), honoringasArray(),asObject(), and theselect()field list (aliases,table.*, and joined columns).- Entity virtual properties are typed from the entity's
$castsand$dates(including custom$castHandlers) layered over the backing database column. fake()returns a single fabricated record of the model's return type.
See the type inference docs for the full list.
Rules
- The superglobals rules were split into four (
SuperglobalsOffsetAccess,SuperglobalsOffsetAssign,SuperglobalsOffsetUnset,SuperglobalsGlobalAssign), now also catching whole-array assignment. Most are auto-fixable withvendor/bin/phpstan analyse --fix. - The
config()/model()::classdiscouragement rule was removed.
Breaking changes
- PHPStan
^2.2and thesqlite3extension are now required. - Rule identifiers and messages changed (the superglobals split/rename and the removed discouragement rule), so existing baseline entries will no longer match and must be regenerated.
See the Upgrade Guide for the full migration steps.
Full Changelog: v1.6.0...v2.0.0
v1.6.0
What's Changed
- Use
listsyntax in phpdoc - Do not use deprecated fixer
- Use
util_bootstrap - Bump actions/checkout from 4 to 5 (#39)
- Simplify test code
- Rename phpstan.dist.neon
- Fix list type required for ConstantArrayType key
- Security harden workflows
- Bump actions/cache from 5.0.4 to 5.0.5 (#42)
- Report abandoned packages
- Bump shivammathur/setup-php from 2.37.0 to 2.37.1 (#43)
- Bump actions/checkout from 6.0.2 to 6.0.3 (#44)
- Bump shivammathur/setup-php from 2.37.1 to 2.37.2 (#45)
- Drop support for PHP 8.1
Full Changelog: v1.5.4...v1.6.0
v1.5.4
What's Changed
- Fix deprecated call to
ClassReflection::isSubclassOf() - Remove unneeded PHPDoc on rules
- Add
ReflectionHelperGetPrivateMethodInvokerReturnTypeExtension(#35) - Fix calling non-static method without an object
- Add extension for
Services::getSharedInstance() - Extract type inference to separate doc
- Fix outdated info in README
- Fix code style and tests
- Add
CacheFactoryGetHandlerReturnTypeExtension(#37) - Allow certain superglobal offsets to be set directly
- Add
REQUEST_TIMEandREQUEST_TIME_FLOATas allowed offsets
Full Changelog: v1.5.3...v1.5.4
v1.5.3
v1.5.2
Fixed 🔧
- Move
codeigniter4/frameworkto require-dev (#33) - Fix code styles
New Contributors
- @samsonasik made their first contribution in #33
Full Changelog: v1.5.1...v1.5.2
v1.5.1
v1.5.0
What's Changed
- Fix removed
deleted_aton UserModel - Move bootstrap.php to root
- Apply cs fixes
- Update rector/rector requirement from ^0.18.2 to ^0.19.2 (#23)
- Bump actions/cache from 3 to 4 (#22)
- Update rector/rector requirement from ^0.19.2 to ^1.0.0 (#24)
- Fix styles
- Add explicit callback for array_filter
- Fix return type of locator service
- Fix return PHPDocs
- Fix deprecation of
ParametersAcceptorSelector::selectSingle() - Update phpunit/phpunit requirement from ^10.2 to ^11.4 (#29)
- Bump to phpstan 2.0
Full Changelog: v1.4.3...v1.5.0