Release Date: Unreleased
4.5.0 release of CodeIgniter4
- Update minimal PHP requirement to 8.1.
- TBD
The order in which Controller Filters are executed has changed. See :ref:`Upgrading Guide <upgrade-450-filter-execution-order>` for details.
Due to a bug fix, the behavior has changed so that options passed to the outer
group()
are merged with the options of the inner group()
.
See :ref:`Upgrading Guide <upgrade-450-nested-route-groups-and-options>` for details.
:doc:`../concepts/factories` has been changed to a final class. It is a static class, and even if it were extended, there is no way to replace it.
- AutoRouting Legacy: Changed so that a
PageNotFoundException
is thrown if the controller corresponding to the request URI does not exist. - Logger: The :php:func:`log_message()` function and the logger methods in
CodeIgniter\Log\Logger
now do not returnbool
values. The return types have been fixed tovoid
to follow the PSR-3 interface. - Autoloader: The prefix
\
in the fully qualified classname returned byFileLocator::findQualifiedNameFromPath()
has been removed. - BaseModel: The
getIdValue()
method has been changed toabstract
.
Note
As long as you have not extended the relevant CodeIgniter core classes or implemented these interfaces, all these changes are backward compatible and require no intervention.
- ResponseInterface: The default value of the third parameter
$expire
of theResponseInterface::setCookie()
has been fixed from''
to0
. - Logger: The psr/log package has been upgraded to v2.0.0.
The third parameter $expire
in :php:func:`set_cookie()` and
:php:meth:`CodeIgniter\\HTTP\\Response::setCookie()` has been fixed.
The type has been changed from string
to int
, and the default value has
been changed from ''
to 0
.
- Router: The first parameter of the
RouteCollection
constructor has been changed fromFileLocator
toFileLocatorInterface
. - View: The third parameter of the
View
constructor has been changed fromFileLocator
toFileLocatorInterface
.
- Model: The return type of the
objectToRawArray()
method in theModel
andBaseModel
classes has been changed from?array
toarray
.
To add declare(strict_types=1)
to the framework codebase, the method parameter
type ?string
for a value to validate in the all Traditional Validation rule
classes CodeIgniter\Validation\FormatRules
and CodeIgniter\Validation\Rules
are removed.
For example, the method signature changed as follows:
Before: public function integer(?string $str = null): bool After: public function integer($str = null): bool
- Logger: The method signatures of the methods in
CodeIgniter\Log\Logger
that implements the PSR-3 interface have been fixed. Thebool
return types are changed tovoid
. The$message
parameters now havestring|Stringable
types.
The following deprecated items have been removed, because now :ref:`multiple-filters` are always enabled.
Filters::enableFilter()
RouteCollection::getFilterForRoute()
Router::$filterInfo
Router::getFilter()
ModelFactory
BaseModel::idValue()
BaseModel::fillPlaceholders()
Model::idValue()
Model::classToArray()
The visibility of the deprecated property
ResponseTrait::$CSP
has been changed to protected.The following deprecated properties have been removed.
ResponseTrait::$CSPEnabled
ResponseTrait::$cookiePrefix
ResponseTrait::$cookieDomain
ResponseTrait::$cookiePath
ResponseTrait::$cookieSecure
ResponseTrait::$cookieHTTPOnly
ResponseTrait::$cookieSameSite
ResponseTrait::$cookies
$path
$useSafeOutput
useSafeOutput()
setPath()
CIDatabaseTestCase
ControllerResponse
ControllerTester
FeatureResponse
FeatureTestCase
migrate:create
session:migration
- IncomingRequest: The visibility of the deprecated properties
$uri
and$config
has been changed to protected. - RequestInterface: The deprecated
isValidIP()
method has been removed. - Request: The deprecated
isValidIP()
method has been removed. - Config: The deprecated
CodeIgniter\Config\Config
class has been removed.
- Added
spark config:check
command to check Config values. See :ref:`confirming-config-values` for the details. - Added
spark lang:find
command to update translations keys. See :ref:`generating-translation-files-via-command` for the details.
- DomParser: The new methods were added
seeXPath()
anddontSeeXPath()
which allows users to work directly with DOMXPath object, using complex expressions. - CLI: The new
InputOutput
class was added and now you can write tests for commands more easily if you useMockInputOutput
. See :ref:`using-mock-input-output`.
- Validation: Added the new rule
field_exists
that checks the filed exists in the data to be validated.
- Autoloader:
- Autoloading performance when using Composer has been improved.
Adding the
App
namespace in theautoload.psr4
setting in composer.json may also improve the performance of your app. See :ref:`autoloader-application-namespace`. - FileLocator Caching implemented. See :ref:`file-locator-caching` for details.
FileLocatorInterface
has been added.
- Autoloading performance when using Composer has been improved.
Adding the
- CodeIgniter: Added a pseudo-variable
{memory_usage}
to show your memory usage in your view files, which was supported by CodeIgniter 3.
- Added
Validation.field_exists
error message.
- Config:
Config\Feature::$multipleFilters
has been removed, because now :ref:`multiple-filters` are always enabled.
- CodeIgniter: The
determinePath()
method has been deprecated. No longer used. - Response: The constructor parameter
$config
has been deprecated. No longer used.
See the repo's CHANGELOG.md for a complete list of bugs fixed.