Version 4.0.4

Release Date: July 15, 2020

4.0.4 release of CodeIgniter4


  • The location for the SQLite3 database has changed and by default will be now located in a writable folder instead of the public folder.

  • New CLI command: cache:clear that will destroy all data within the current cache engine.

  • Thanks to samsonasik, we have several libraries brought up to 100% test coverage.

  • A few small performance increases. Every ounce matters!

  • getFieldData() in the database results class now returns column type and length.

  • Default .htaccess file updated to work better with extended characters.

  • New Testing Feature: Fabricator makes creating mock classes simple and repeatable in your tests.

  • Model class can now have the callbacks overridden at runtime. Useful for testing.

  • A number of improvements to Feature Tests in general.

  • New command() helper function to programatically run your CLI commands. Useful for testing and cron jobs.

  • New command, make:seeder to generate a Database Seed class skeleton file.

  • Colors now available on the CLI within Windows, as well as other Windows-related CLI improvements.

  • New helper mb_url_title that functions like url_title but automatically escapes and extended URL characters.

  • Image library now supports webp images.

  • Added Unicode support for regular expressions in the Router.

  • Added support for removing hidden folders in the delete_files helper

  • fetchGlobal in the Request class now supports applying filters to arrays of data, not just the first item.

  • file validation now works with arrays of files.

  • URI class now supports a setSilent() method that will disable the throwing of Exceptions.

  • New argument to URI::getSegment() that allows us to change the default value returned if nothing exists.

  • Implemented a withResource() in Image so that you can use method chaining instead of using the provided getResource() (used in tests). To just compress your image.

  • Cookies and headers can be copied from the global Response object when doing a redirect using the new withCookies() and withHeaders() methods.

  • Support for special prefix “hex2bin:” which can be used with $key parameter in Encryption class or in .env file.

Bugs Fixed

  • Fixed location for the SQLite3 database which by default will be now located in a writable folder instead of the public folder.

  • Fixed bug where force_https could add https:// a second time.

  • Fixed a bug with CurlRequest that could result in incorrect “100 Continue” headers.

  • Image::save() bug fixed when $target parameter was null

  • fixes for set_checkbox() and set_radio() when the $default parameter is set to true

  • fix for result object handling in Model class .

  • fixed escape character SQLite database

  • fix for inserts on Postgres and Entities when the primary key was null

  • CLI scripts can now correctly recognize dashes within arguments.

  • CURLRequest now properly sets content length with multipart data

  • Misc. stability improvements for the ImageMagick handler

  • setting validation errors within a config file should now work

  • Unicode characters are not escaped when saving JSON from Entities.

  • redirecting with a custom HTTP code should work correctly now

  • Time::setTimezone now working correctly

  • added full outer join support for Postgres

  • some cast items in the Entity (like array, json) were not being set correctly during a fill() process.

  • Fixed bug in Image GD handler that would try to compress images twice in certain cases

  • Ensure get translation output logic work on selected locale, dashed locale, and fallback “en”

  • Fix is_unique/is_not_unique validation called on POST/PUT via API in Postgresql

  • Added $arguments parameter to after() and before() in FilterInterface. This is a breaking change, so all code implementing the FilterInterface must be updated

  • Fixed a bug where filter arguments were not passed to after()