Skip to content

Latest commit

 

History

History
272 lines (196 loc) · 7.31 KB

File metadata and controls

272 lines (196 loc) · 7.31 KB

Version 4.5.0

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 return bool values. The return types have been fixed to void to follow the PSR-3 interface.
  • Autoloader: The prefix \ in the fully qualified classname returned by FileLocator::findQualifiedNameFromPath() has been removed.
  • BaseModel: The getIdValue() method has been changed to abstract.

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 the ResponseInterface::setCookie() has been fixed from '' to 0.
  • 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 from FileLocator to FileLocatorInterface.
  • View: The third parameter of the View constructor has been changed from FileLocator to FileLocatorInterface.
  • Model: The return type of the objectToRawArray() method in the Model and BaseModel classes has been changed from ?array to array.

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. The bool return types are changed to void. The $message parameters now have string|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.
  • DomParser: The new methods were added seeXPath() and dontSeeXPath() 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 use MockInputOutput. 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 the autoload.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.
  • 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:
  • 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.