Skip to content

5.0 Roadmap

othercorey edited this page Jul 12, 2023 · 44 revisions

New Features

General

  • PHP 8.1+ (enumerations, read-only properties)
  • Add native type hints to method parameters and returns except null|void and external/PSR interfaces.
  • Add native type hints for properties where possible
  • Normalize passing $config array to initialize() and document that it is unmerged. (rejected)
  • Change Behaviors to accept any RepositoryInterface not just Table (https://github.com/cakephp/cakephp/issues/11861) (https://github.com/cakephp/cakephp/pull/14499) (rejected)

Changes

General

Clean finder options/argument separation

Commands

  • Logging inside commands should output to stdout without interrupting other custom logging contexts.

Core + Controller + Commands

Database + ORM + Validation

  • Remove the __call() magic method and ability to implicitly iterate \Cake\Database\Query instance. It's a major cause of confusion for new users. #15665
  • Add 'Time' only type #14148
  • Change Driver::quote() typehints to (string, int) to match PDO::quote().
  • Revisit $when = true default ( https://github.com/cakephp/cakephp/pull/14370 )
  • Merge the SqlGeneratorInterface with TableSchemaInterface (rejected for 5.0)

I18n

  • Fix up domain names from multi-namespace plugin names (cake_d_c/users => cake_d_c_users and the same for the file name then to match this) to not collide with other non plugin domains. (https://github.com/cakephp/docs/pull/6585)

TestSuite

  • Remove the PHPUnit listener. Leaving only the extension behind.
  • Fold fixture record loading into the Fixture strategies so that loading/resetting are co-located and can be swapped if necessary.

View

Rector Transformations

  • getTypeName() into get_debug_type() (https://github.com/cakephp/cakephp/pull/15686)
  • Rename FrozenTime and FrozenDate to DateTime and Date.
  • Add native types to Entity implementations. Properties like _hidden and _virtual will need native types applied. See this pull request
  • Replace Controller::loadModel() with Controller::fetchTable()
  • Replace Command::loadModel() with Command::fetchTable()
  • Add a return type to Command::execute() and Command::run().
  • Add a return value to Command subclasses that have a null return. We should replace the null/void return with return static::CODE_SUCCESS.
  • Rename Cake\ORM\Query to Cake\ORM\SelectQuery pull request.
  • Replace Query order() with orderBy(), orderAsc() with orderByAsc() and orderDesc() with orderByDesc()
  • Replace Query group() with groupBy()
  • Replace WindowInterface order() with orderBy()
  • Create rules for updating methods dropped in Chronos 3 https://github.com/cakephp/chronos/issues/335