CakePHP: The Rapid Development Framework for PHP - Official Repository

Overview

CakePHP

Software License Build Status Coverage Status Code Consistency Total Downloads Latest Stable Version

CakePHP is a rapid development framework for PHP which uses commonly known design patterns like Associative Data Mapping, Front Controller, and MVC. Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility.

Installing CakePHP via Composer

You can install CakePHP into your project using Composer. If you're starting a new project, we recommend using the app skeleton as a starting point. For existing applications you can run the following:

$ composer require cakephp/cakephp

For details on the (minimum/maximum) PHP version see version map.

Running Tests

Assuming you have PHPUnit installed system wide using one of the methods stated here, you can run the tests for CakePHP by doing the following:

  1. Copy phpunit.xml.dist to phpunit.xml.
  2. Add the relevant database credentials to your phpunit.xml if you want to run tests against a non-SQLite datasource.
  3. Run phpunit.

Some Handy Links

  • CakePHP - The rapid development PHP framework.
  • CookBook - The CakePHP user documentation; start learning here!
  • API - A reference to CakePHP's classes.
  • Awesome CakePHP - A list of featured resources around the framework.
  • Plugins - A repository of extensions to the framework.
  • The Bakery - Tips, tutorials and articles.
  • Community Center - A source for everything community related.
  • Training - Join a live session and get skilled with the framework.
  • CakeFest - Don't miss our annual CakePHP conference.
  • Cake Software Foundation - Promoting development related to CakePHP.

Get Support!

  • Slack - Join us on Slack.
  • #cakephp on irc.freenode.net - Come chat with us, we have cake.
  • Forum - Official CakePHP forum.
  • GitHub Issues - Got issues? Please tell us!
  • Roadmaps - Want to contribute? Get involved!

Contributing

Security

If you’ve found a security issue in CakePHP, please use the following procedure instead of the normal bug reporting system. Instead of using the bug tracker, mailing list or IRC please send an email to security [at] cakephp.org. Emails sent to this address go to the CakePHP core team on a private mailing list.

For each report, we try to first confirm the vulnerability. Once confirmed, the CakePHP team will take the following actions:

  • Acknowledge to the reporter that we’ve received the issue, and are working on a fix. We ask that the reporter keep the issue confidential until we announce it.
  • Get a fix/patch prepared.
  • Prepare a post describing the vulnerability, and the possible exploits.
  • Release new versions of all affected versions.
  • Prominently feature the problem in the release announcement.
Comments
  • 3.0 Require Composer

    3.0 Require Composer

    This set of changes switches CakePHP and applications created with it to rely on composer. In the future developers will create a new application in one of the following ways:

    • Cloning cakephp/cakephp-app.
    • Using php composer.phar create-project cakephp/cakephp-app
    • Downloading a prebuilt all in one package.

    This obsoletes and removes the following install options as supported options. You'll still be able to make some of them work if you try hard enough.

    • PEAR package
    • Shared CakePHP libraries.
    • Just cloning cakephp/cakephp (as there won't be an app dir).

    These new install options will require a new repository for the application skeleton that has not been created. I've created prototype repositories for the new splits at markstory/cakephp-cakephp and markstory/cakephp-app. These prototypes are what I'm planning the final repositories will look like. There are a few things left to do, and the list below details them. However, I wanted to get the discussion started early as I'm sure there will be more than a few opinions and good ideas I didn't have about this change.

    Todo

    • [x] Repair travis ci builds.
    • [x] Verify that cake bake project still works.
    • [x] Finish tests off where possible for ProjectTask.
    • [x] Sort out Cake\Core\Plugin and the Classloader. (deferred to a future pull request)

    After this is merged I'll be doing the following:

    • Creating a new cakephp/cakephp-app repository and splitting the App subtree off into it. This will make future merges painful as the code will be in a different repository. But generally the App directory doesn't change much so I think merging issues will be rare.
    • Shuffling files around in cakephp/cakephp so that the current lib/ is the new repository root.
    opened by markstory 96
  • 3.0 RFC: Function notation

    3.0 RFC: Function notation

    TL;DR Abandon the _protected() and __private() convention.

    Proposal Cake has been in development for a long time now and when it started it supported very old PHP versions. When PHP4 was around there were no visibility keywords, which is why a convention of prefixing methods was adopted.

    I think that this old convention should be dropped in the next major version of the framework.

    Reasoning At CakeFest 2014 @jameswatts said in his community keynote that we should be working to help market the framework and push it within the community with colleagues, friends and peers. I feel that having a new major version of the framework still using a convention which was born in PHP4 will give nay-sayers good ammunition to keep on with their 'Cake still uses php4 conventions'.

    The newer frameworks are being sold to developers on the software engineering patterns that they implement and how they solve problems. The next major version of the framework has done lots to address this angle of promoting the framework, so it seems odd to me that such an old convention should still exist in the new major version of the framework.

    Pros

    • Keeps the framework modern.
    • Takes away ammunition from nay-sayers.
    • A major release to the framework creates a solid break from old conventions.
    • IDEs have moved on since back-in-the-day, so devs will see method visibility.
    • Less to type :wink:

    Cons

    • Will be lots of change for no functional benefit.
    • Will cause plugin developers to change any existing 3.x plugins in development.
    • Sniffs need updating.

    Thoughts I am interested to discuss this issue as I really feel that it is a simple change which will really push the framework on as perceived by potential users.

    RFC 
    opened by davidyell 92
  • Deprecate TableRegistry static API.

    Deprecate TableRegistry static API.

    There were some complaints about CakePHP relying too much on static classes and TableRegistry was one of the examples. Actually TableRegistry is just a static API wrapper for TableLocator.

    The best practice is to use LocatorAwareTrait in classes that need access to the table "registry".

    For example:

    //deprecated call
    $users = TableRegistry::get('Users');
    
    //use table locator instead
    use \Cake\ORM\Locator\LocatorAwareTrait;
    ...
    $locator = $this->getTableLocator();
    $users = $locator->get('Users');
    
    //or in global context:
    $locator = TableRegistry::getTableLocator();
    $users = $locator->get('Users');
    

    TableRegistry::getTableLocator() needs to stay for a while so the apps relying on a global locator wouldn't break.

    Nothing changes for classes that use ModelAwareTrait (controllers, shells, etc):

    $this->loadModel('Users');
    $this->Users->get(1);
    
    ORM deprecations 
    opened by robertpustulka 88
  • Code of conduct (link to cakephp/code-of-conduct project)

    Code of conduct (link to cakephp/code-of-conduct project)

    In order to grease the wheels for #7682 as much as possible, here's a PR that adopts the Contributor Covenant into the Core project. Ideally, this should be replicated into all of the ancillary project (docs, bake, debug_kit, migrations, etc).

    • [x] The CODE_OF_CONDUCT.md file requires a valid and actively monitored email address that people can use to report inappropriate behavior. (Search for [INSERT EMAIL ADDRESS].) If such an address exists, please let me know so I can update the PR.
    opened by beporter 71
  • 3.0: New design for generated files.

    3.0: New design for generated files.

    Currently the design for generated views looks ugly not feels ready to use. I can write schemas ready for foundation with the ready designs I use at my commercial projects.

    If you have some other ideas about this please tell. screen shot 2015-05-29 at 20 40 48

    enhancement 
    opened by unfinishedtomato 62
  • Increase shutdown memory for Fatal Error handling

    Increase shutdown memory for Fatal Error handling

    When a script runs out of memory and triggers a fatal error there often is not enough additional memory left to execute the Cache::write() calls in the shutdown() hook causing execution to stop prematurely. If those Cache calls are skipped over, then the code usually stops prematurely somewhere in the middle of the error handler.

    This patch has been tested and verified using the function below. It allows the shutdown() hook to complete gracefully by providing additional memory.

    This problem exists on all 2.X versions (and possibly in 3.X as well)

    $x = array(); while(true){ $x[] = rand(); }

    opened by adam1010 60
  • Require PHP 5.5 as minimum version

    Require PHP 5.5 as minimum version

    PHP 5.4 will receive no more support after June this year as version 5.5 was released almost 2 years ago. I'm not sure how the landscape of hosting providers will look like in 6 months, but I think we should start making a decision for the next milestone or two.

    As an important decision factor, Symfony 3, which is due in October of this year, will also be requiring 5.5 as a minimum.

    RFC 
    opened by lorenzo 59
  • RFC: Use Model folder for Business layer

    RFC: Use Model folder for Business layer

    This is a (multiple allowed):

    • [ ] bug
    • [x] enhancement
    • [x] feature-discussion (RFC)

    Refs https://github.com/cakephp/cakephp/issues/10202#issuecomment-299416583

    Yes, I agree there could be some general pattern for Business layer. If we suggested the "CakePHP way" of implementing business logic, this could help developers write better code.

    Status Quo

    Too much non-ORM business logic munched together with the queries and DB interaction inside of Table classes. Makes sense as no one knows how to use some factory pattern to use a more generic Business layer before directly interacting with our "persistence" layer in Model/Table.

    Suggestions derived from the discussion

    Let's directly use the /src/Model folder

    // base class
    src/Model/Model.php
    
    // concrete business class
    src/Model/CalculationModel.php
    
    // load via factory (or also via trait)
    $calculationModel = ModelRegistry::get('Calculation')
    

    The model could have the Table loading trait then to make $this->loadModel() Table calls internally. Even though I don't like the word model here too much in that method. Also problematic: Nesting then, as the sub-namespaces Table, Entity, Behavior etc are collisions.

    We could also use a completely free namespace, of course.

    Any other BC ideas that would be minimal invasive but allows to do separation as opt-in? We could get this started in 3.6 even then.

    RFC enhancement stale 
    opened by dereuromark 57
  • Template entity access

    Template entity access

    This is a (multiple allowed):

    • [ ] bug

    • [x] enhancement

    • [x] feature-discussion (RFC)

    • CakePHP Version: 3.5.12

    • Platform and Target: PHP 7.2.1

    What you did

    I tried to call Entity::get() on a non-existent property. This method.

    An example might be a Catalog, which has associated Content, which also has associated Advertising.

    $catalog->get('content')->get('adverts')
    

    What happened

    My application failed with a fatal exception. Because I tried to access an empty property. Cannot call get() on null

    What you expected to happen

    I would expect a way to allow for optional associations, without having to include lots of state checking into my templates.

    How am I sidestepping the issue?

    if (!empty($catalog->get('content')) && !empty($catalog->get('content')->get('adverts')) {
       // Output the adverts
    }
    

    This is what I am having to put into my templates to ensure that I can sidestep the potential fatal. Which, as you can imagine soon gets out of hand with many levels of associations.

    I also have to consider my front-end developer colleagues whos primary language isn't PHP, and this could seem confusing. Or even worse, if they copy and paste incorrectly, they'll prevent an entire page from rendering.

    Proposition

    I'm hoping for some discussion, but I have had a few chats in Slack about the issue. Usually born out of frustration because I forget to include all the isset() or !empty() checking, and hit a fatal.

    Solution 1 (via @hmic)

    The general gist of the conversation that @hmic and I had was the inclusion of an entity trait which would allow the entity to avoid the fatal and instead just return null and prevent any further get() calls from happening. This was only if the complete association was resolvable would anything be returned.

    Solution 2 (via @dereuromark)

    Marks idea was to create functional separation in the entity with something like get() and getIfExists(). Which would allow for more flexibility in how the developer wanted to interact with the entity. Alternatively adding an extra param to get($property, $defaultReturnValue) to allow for overriding.

    RFC

    Adding a new method is my favourite, as it maintains BC, and creates a nice functional separation in the api, with clearly defined behaviours, which are obvious from reading the code.

    Please add any thoughts you have on this topic, and if you've struggled with this fatal exception yourself how you have coped with it in your templating.

    RFC enhancement 
    opened by davidyell 54
  • CakePh 3.x alpha2 Plugin Controller not accessible allthough exist at right location

    CakePh 3.x alpha2 Plugin Controller not accessible allthough exist at right location

    hey :) I'm using cakephp 3.x alpha2 and am trying to set up a self made plugin following this doc: http://book.cakephp.org/3.0/en/plugins.html I got controller, model, entity, table, controllers views all under plugins/ValidatorService/src the controller is under and has an index function: plugins/ValidatorService/src/Controller/ValidatorsController.php
    templates reside in plugins/ValidatorService/src/Templates/Validators/
    ... like in doc. I load the plugin in bootstrap and the composer.json contains the correct paths. I tried all kinds of schemas for routing but every time I call the plugin's controller with url: cakephp/validator_service/validators/index I get error saying the controller class does not exist see attached image. plugin-routing-error

    so it seems the plugin name is taken for the controller. I tried a similar set up with cakephp 2.4.9 and there the routing works without changes in the routes.php

    routing support 
    opened by ranxero 54
  • 3.0 RFC: Remove AppModel AutoModel

    3.0 RFC: Remove AppModel AutoModel

    Something I've seen new CakePHP developers stumble over is CakePHP creating replacing their model instance with an AppModel if the model could not be found. This causes confusing cases where you might setup your model configuration right but then CakePHP just ignores it - and the developer then blames CakePHP...

    Instead, I propose removing this completely in 3.0. If a user does not have a model properly loaded - however that is - then a ModelNotFound exception can be thrown.

    Not sure in what cases CakePHP uses this internally, but I'd be happy to discuss ways to remove it.

    RFC 
    opened by josegonzalez 52
  • Add runtime deprecations for class aliases

    Add runtime deprecations for class aliases

    We added many class rename deprecations during 4.x but didn't include runtime deprecations for them. Adding runtime deprecations in 4.5 will encourage developers to update their code before the breaking change in 5.0

    Refs cakephp/docs#7561

    opened by markstory 2
  • Table::getOrNull(), nullable version of Table::get()

    Table::getOrNull(), nullable version of Table::get()

    Description

    Table::get() throws RecordNotFoundException if the $primaryKey does not exist.

    It is reasonable for the first codes in the controller actions; if it does not exist, then show 404 error pages. But if the non-existence is the regular case, we have to select the following: to call get with try-catch statement, or use Query chain methods like findById(), first().

    As known, using exceptions in non-exceptional cases is regarded as a bad habit.

    try {
        /** @throws RecordNotFoundException */
        $article = $articlesTable->get($id);
    } catch (RecordNotFoundException $e) {
        $article = null;
    }
    if ($article === null) {
        // ...
    }
    

    The other hands, the results of Query chains is EntityInterface|array|null (array is the case of disabled hydration) , so it should be typed manually.

    /** @var Article|null */
    $article = $articlesTable->findById($id)->first();
    

    Table::getOrNull()

    Table::getOrNull() is implemented as such:

    class Table
    {
        public function getOrNull($primaryKey, array $options = []): ?EntityInterface
        {
            try {
                return $this->get($primaryKey, $options);
            } catch (RecordNotFoundException $e) {
                return null;
            }
        }
    }
    

    It can be annotated to return subtypes of EntityInterface with @method.

    /**
     * @method Article|null getOrNull($primaryKey, array $options=[])
     */
    class ArticlesTable extends Table
    {
    }
    

    The following code is not only looks reasonably short, but type analyzer friendly.

    $article = $articlesTable->getOrNull($id);
    if ($article === null) {
        // ...
    }
    

    CakePHP Version

    No response

    enhancement ORM 
    opened by ckbx-cakebox 2
  • Session::_overwrite Argument #1 $old must

    Session::_overwrite Argument #1 $old must

    Description

    $session = $this->getRequest()->getSession(); $user = $session->read('Auth');

    Session::_overwrite Argument #1 $old must be array null given...

    This some strange error, when use mobile and switch from wifi to 4G network, on click link the session seem to be gone. Then need to go back refresh the page 2 times, then the session is back and user logged in...

    CakePHP Version

    4.4

    PHP Version

    8.0.22

    defect 
    opened by tgoeminne 6
  • Access to dependency injection container inside test cases

    Access to dependency injection container inside test cases

    Description

    Currently to unit test an individual method of the class, we are creating object of that class directly.

    Example:

    $fooCommand = new FooCommand();
    $fooCommand->doSomething();
    

    This works fine as long as we don't have any dependency injection in place. After injecting a service into FooCommand command, this can no longer work because it can't find that injected class object.

    In scenarios like this, it would be good to have access to DI container so we can fetch the class object from the container.

    Example:

    // inside FooCommandTest.php
    // Get command class
    $fooCommand = $this->getContainer()->getService(FooCommand::class);
    
    // Get service class
    $fooService = $this->getContainer()->getService(FooService::class);
    

    CakePHP Version

    No response

    enhancement testing core 
    opened by ishanvyas22 7
  • Add trustedProxies as option for HttpsEnforcerMiddleware

    Add trustedProxies as option for HttpsEnforcerMiddleware

    Description

    HttpsEnforcerMiddleware currently has no support for setting trustedProxies.

    This can be fixed by adding a trustedProxies array option to that will be passed to $request->setTrustedProxies([]) if it's part of the options.

    CakePHP Version

    4.x

    enhancement 
    opened by swiffer 1
  • Inconsistent template path for plugin pages

    Inconsistent template path for plugin pages

    How to reconstruct issue:

    1. bake new MainWebsite plugin
    2. create plugins/MainWebsite/src/Controller/PagesController.php with following contents
    <?php
    declare(strict_types=1);
    
    namespace MainWebsite\Controller;
    
    class PagesController extends \App\Controller\PagesController
    {
    }
    
    1. Inside plugins/MainWebsite/src/MainWebsitePlugin.php
    public function routes(RouteBuilder $routes): void
    {
        $routes->plugin(
            'MainWebsite',
            ['path' => '/'],
            function (RouteBuilder $builder) {
                // Add custom routes here
                $builder->connect('/*', 'Pages::display');
            }
        );
        parent::routes($routes);
    }
    
    1. visit https://localhost/example You will get error with correct paths:
    Confirm you have created the file: "Pages/example.php" in one of the following paths:
    
        /application/templates/plugin/MainWebsite/Pages/example.php
        /application/plugins/MainWebsite/templates/Pages/example.php
        /application/templates/Pages/example.php
    

    This is what i expected to see

    1. But when you visit https://localhost/subfolder/example You will get error with incorrect paths:
    Confirm you have created the file: "subfolder/example.php" in one of the following paths:
    
        /application/templates/plugin/MainWebsite/subfolder/example.php
        /application/plugins/MainWebsite/templates/subfolder/example.php
        /application/templates/subfolder/example.php
    

    What I expected to see:

    Confirm you have created the file: "Pages/subfolder/example.php" in one of the following paths:
    
        /application/templates/plugin/MainWebsite/Pages/subfolder/example.php
        /application/plugins/MainWebsite/templates/Pages/subfolder/example.php
        /application/templates/Pages/subfolder/example.php
    

    CakePHP Version

    4.4.7

    PHP Version

    8.1

    defect 
    opened by asgraf 0
Releases(4.4.9)
  • 4.4.9(Dec 30, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.4.9. This is a maintenance release for the 4.4 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.4.9. See the changelog for every commit.

    • Improve duplicate route detection in cake routes.
    • Make ShadowTranslate strategy for TranslateBehavior handle missing association records with translations consistently with EavStrategy.

    Contributors to 4.4.9

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Mark Story
    • Matthias Wirtz
    • othercorey

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-9.zip(9.94 MB)
  • 5.0.0-beta1(Dec 19, 2022)

    The CakePHP core team is proud to announce the first beta release of CakePHP 5.0.0. This initial release contains most of the new features and breaking changes that 5.0 will contain. This release contains a minimal working application skeleton. It also features a new version of Chronos with several breaking changes. A focus of 5.0 has been to remove deprecated features and improve the adoption of native type-declarations where possible.

    Our focus in the near future is to finish updating all of the CakePHP maintained plugins to be compatible with 5.0. We'll also be putting more work into backporting deprecations into the next 4.x release (4.5.0) so that upgrading can be done incrementally before 5.x is released.

    Finally, the scope for 5.x isn't locked down so if you'd like to see a feature or breaking change made please open an issue.

    New Features

    The migration guide has a complete list of what's new in 5.0.0. We recommend you give that page a read when upgrading as it notes the various breaking changes present in 5.0.

    How you Can Help

    You can help deliver 5.0 by contributing in one of many ways:

    1. Check the documentation for mistakes, outdated, unclear or broken examples. We've been trying to update everything but may have not caught everything.
    2. Try it out! Give CakePHP 5.0 a test drive in a non-production application. We'd love to hear how converting a small application went and what was harder than it should have been.
    3. File issues for regressions in existing features, or suggest new features. Even if those features don't make it into 5.0, we would appreciate community input on what should be part of 5.1 and 5.2

    Contributors to 5.0.0-beta1

    Thank you to all the contributors that have helped since the alpha1 release:

    • ADmad
    • Chris Nizzardini
    • Kevin Pfeifer
    • Mark Scherer
    • Mark Story
    • ndm2
    • othercorey
    • saeideng

    As always, a huge thanks to all the community members that helped make this release happen by reporting issues and sending pull requests.

    Source code(tar.gz)
    Source code(zip)
    cakephp-5-0-0-beta1.zip(9.62 MB)
  • 4.4.8(Dec 2, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.4.8. This is a maintenance release for the 4.4 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.4.8. See the changelog for every commit.

    • Aligned ServerRequest::scheme() and Uri::getScheme() on how they handle proxy headers.
    • Improve compatibility of old PaginatorInterface alias.
    • Fixed infinite loop when a table class was created without a name or table, and getAlias() is called on it.
    • Improve assertMailSentWith comparisons with array values.
    • Fixed sortDefault and directionDefault not working with multiple pagination.
    • Improved typehints and API docs.

    Contributors to 4.4.8

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Marc Würth
    • Mark Story
    • Matthias Wirtz
    • othercorey
    • TerryKern

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-8.zip(9.92 MB)
  • 4.4.7(Oct 30, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.4.7. This is a maintenance release for the 4.4 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.4.7. See the changelog for every commit.

    • Fixed errors arising from exporting objects with invalid __debugInfo() methods.
    • Improved API documentation.
    • Fixed missing dependency to cakephp/database.
    • Fixed regression in FormHelper::radio() and FormHelper::multiCheckbox().

    Contributors to 4.4.7

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Felix Kempf
    • Mark Scherer
    • Mark Story
    • ndm2
    • Oliver Nowak
    • othercorey
    • Tyler Lendon

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-7.zip(9.92 MB)
  • 4.4.6(Oct 2, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.4.6. This is a maintenance release for the 4.4 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.4.6. See the changelog for every commit.

    • Chained or nested exceptions are now rendered correctly in integration test cases, console and HTML exception rendering.
    • ConsoleInputArgument instances no longer consider each other equal based on their option values only.
    • Improve typing and psalm error supression.
    • FormData now accepts UploadedFileInterface as a file.
    • Fixed MySQL schema reflection for tables that use conditional indexes. The expression part of the index is now ignored.
    • Updated links to use https instead of http.
    • Improved CI configuration security.

    Contributors to 4.4.6

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Alex
    • Arhell
    • Corey Taylor
    • Mark Story
    • Nicos Panayides

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-6.zip(9.69 MB)
  • 4.4.5(Aug 29, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.4.5. This is a maintenance release for the 4.4 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.4.5. See the changelog for every commit.

    • Improved handling of authentication errors in Smtp email transport.
    • Re-enabled displaying arguments in stack frames on development error pages.
    • Improved API documentation.
    • Fixed diffForHumans() not translating text based on the current locale.
    • The ValidatableInterface is now deprecated.
    • Fixed mocking services in tests with mockService() for services that are provided by reflection based container delegates.

    Contributors to 4.4.5

    • ADmad
    • celsowm
    • Chris Nizzardini
    • Iacovos Constantinou
    • Marcelo Rocha
    • Mark Scherer
    • Mark Story
    • othercorey

    Thank you to all the contributors that helped make this release happen:

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-5.zip(9.67 MB)
  • 4.4.4(Aug 8, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.4.4. This is a maintenance release for the 4.4 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.4.4. See the changelog for every commit.

    • Simplify tests for Database package. This helps with the development of 5.x.
    • Fix build errors from new versions of intl, MySQL, and openssl.
    • Improved README docs.
    • Fix regression in route parameter coercion intoduced in 4.4.3 with the value 0 being cast to an int.

    Contributors to 4.4.4

    • ADmad
    • blieb
    • Edgaras Janušauskas
    • Mark Scherer
    • Mark Story
    • othercorey

    Thank you to all the contributors that helped make this release happen:

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-4.zip(9.85 MB)
  • 4.4.3(Jul 27, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.4.3. This is a maintenance release for the 4.4 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.4.3. See the changelog for every commit.

    • Fixed a potential method call on null in file assertion methods.
    • Improved compatibility with PHP 8.2.
    • TableLocator::get() no longer throws an error if a table is configured with options and then mocked.
    • Updated CI configuration to use windows 2022 image.
    • Fixed a regression in Folder::create() where umask was not correctly set.
    • Cache keys used with FileEngine are now URL encoded. This aligns the characters valid in cache keys with other engines. It could cause cache misses for applications that were previously using characters outside of the alpha-numeric ranges.
    • Removed redundant class type checks.
    • Fixed ResultSet indexes being mutated by exceptions thrown within a loop while xdebug is enabled.
    • TableLocator now handles getting tables by namespaced class name better.
    • Unused properties in Database\Query were deprecated.
    • Improve casting of integer routing parameters.

    Contributors to 4.4.3

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Apisathan
    • chris cnizzardini
    • Edgaras Janušauskas
    • Erwane Breton
    • Kevin Pfeifer
    • Mark Story
    • othercorey

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-3.zip(9.85 MB)
  • 4.4.2(Jul 6, 2022)

    CakePHP 4.4.2 Released

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.4.2. This is a maintenance release for the 4.4 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.4.2. See the changelog for every commit.

    • Updated constraints on laminas packages.
    • Improved EntityTrait::_accessible type annotation.
    • Added the encrypt and trustServerCertificate options to SqlServerDriver.
    • When viewClasses() based extension driven content-negotiation fails a NotFoundException will now be raised.
    • Fixed ServerRequest::is('xml') from returning true on the default Accept header sent by Firefox.
    • Added deprecation for the Error.errorLogger configure option. This was missed during the development of the ErrorTrap sub-system.
    • Improved API documentation.

    Contributors to 4.4.2

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Cristian Haunsen
    • Mark Story
    • Michael Hoffmann
    • Nicos Panayides
    • othercorey

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-2.zip(9.84 MB)
  • 4.4.1(Jun 13, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.4.1. This is a maintenance release for the 4.4 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.4.1. See the changelog for every commit.

    • Fixed broken links in API documentation.
    • Reverted a deprecation in implementedEvents() as DebugKit was relying on it and we missed identifying this usage earlier.
    • Added scanCount to RedisEngine to give more control over how keys are cleared.
    • Improved deprecation warning for ResultSetInterface proxying.
    • Fixed updating belongsToMany association junction records that contain composite primary keys that involve a column that is mapped to a non-scalar value
    • Fixed P1D date interval expressions when used as cache TTL values.

    Contributors to 4.4.1

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Alex Mayer
    • Corey Taylor
    • Erwane
    • Mark Story
    • Nicos Panayides
    • ndm2
    • othercorey

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-1.zip(9.88 MB)
  • 4.4.0(Jun 7, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.4.0. This is the first stable release of 4.4.0. 4.4.0 provides a number improvements to CakePHP.

    Upgrading to 4.4.0

    You can use composer to upgrade to CakePHP 4.4.0::

    php composer.phar require --update-with-dependencies "cakephp/cakephp:4.4.*"
    

    Deprecation Warnings

    4.4 introduces a few deprecations. All of these features will continue for the duration of 4.x but will be removed in 5.0. See the migration guide.

    What's new in 4.4.0?

    The migration guide has a complete list of what's new in 4.4.0. We recommend you give that page a read when upgrading. A few highlights from 4.4.0 are:

    • A new Error and Exception handling framework that is easier to extend and requires less application code to operate.
    • The RedisEngine now supports fast deletes with deleteAsync().
    • bin/cake routes now highlights collisions in route templates.
    • Controller::viewClasses() was added. This method enables controllers to take control of what content-types they can respond as.
    • View classes can define the static method contentType() to participate in content-type negotiation.
    • Query::expr() was added as an alternative to Query::newExpr().
    • The QueryExpression::case() builder now supports inferring the type from expressions passed to then() and else() that implement \Cake\Database\TypedResultInterface.
    • BaseApplication::handle() now adds the $request into the service container all the time.
    • HttpsEnforcerMiddleware now has an hsts option that allows you to configure the Strict-Transport-Security header.
    • TreeBehavior now supports triggering ORM callbacks when deleting nodes.

    Contributors to 4.4.0

    Thank you to all the contributors that helped make 4.4 happen:

    • ADmad
    • Alejandro Ibarra
    • Chetan Varshney
    • Corey Taylor
    • Gerhard Lechner
    • itosho
    • Jorge González
    • Kevin Pfeifer
    • Mark Scherer
    • Mark Story
    • naveen
    • saeideng

    As always, a huge thanks to all the community members that helped make this release happen by reporting issues and sending pull requests. 4.4.0 is a large release and would not have been possible without the community support and feedback.

    What's Next

    With 4.4.0 shipped, the core team's focus will be primarily on CakePHP 5.0. So far in the 5.x branch, the team has:

    • Bumped the required version of PHP to 8.1.0
    • Removed all the behavior that was deprecated in 4.x.
    • Improved typehinting by using features in PHP 8.1.
    • Updated interfaces with @method annotations.

    The roadmap for 5.x is still under development, and if there is a feature you feel passionate about or a tedious behavior you'd like to see changed, please open an issue and get the discussion started.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-0.zip(9.85 MB)
  • 4.3.10(Jun 3, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.10. This is a maintenance release for the 4.3 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.3.10. See the changelog for every commit.

    • Fixed patchEntity() failing when a table contains a field that matches the name and casing of the table alias.
    • Fixed Collection::__debugInfo() failing when a count could not be generated.

    Contributors to 4.3.10

    Thank you to all the contributors that helped make this release happen:

    • Kevin Pfeifer
    • Mark Story
    • naveen
    • othercorey
    • Robert Gasch
    • Sheldon Reiff

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-10.zip(9.79 MB)
  • 3.10.4(May 21, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 3.10.4. This is a maintenance and security release for the 3.10 branch that fixes a community reported issue, and patches a security vulnerability.

    Security Fixes

    The 3.10.4 release fixes an encoding issue with the verified tokens feature of CsrfProtectionMiddleware released in 3.10.3. In 3.10.3 verfied tokens were generated using random bytes and would often fail to match as the bytes would be incorrectly encoded when rendered in HTML.

    Bugfixes

    You can expect the following changes in 3.10.4. See the changelog for every commit.

    • Fixed incorrectly encoded CSRF tokens when using the verifyTokenSource option.

    Contributors to 3.10.4

    Thank you to all the contributors that helped make this release happen:

    • Marc Würth
    • Mark Story

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
  • 4.4.0-RC2(May 15, 2022)

    The CakePHP core team is proud to announce the second release candidate of CakePHP 4.4.0. The 4.4.0 release will introduce several new features and a handful of deprecations.

    New Features

    The migration guide has a complete list of what's new in 4.4.0. We recommend you give that page a read when upgrading as it outlines the deprecations present in 4.4.

    Changes Since 4.4.0-RC1

    • The current request is now automatically added to your application's dependency injection container making it easier to have services that depend on the current request.
    • Fixture schema reflection now clears the table registry to prevent errors with applications that initialize tables in initialize() hooks.
    • PaginatorHelper::limitControl() now works with multiple pagination.
    • Additional features on Debugger were deprecated in favour of using ErrorTrap instead.
    • Pagination classes were moved under Cake\Datasources\Paging.
    • Renamed DefaultPaginator to NumericPaginator.
    • The experimental flag was removed from the dependency injection container. It is now considered a stable API.
    • Improved the logging configuration in ErrorTrap and ExceptionTrap.
    • Fixed missing use of bindingKey in BelongsToMany associations.
    • Improved handling of invalid cookie names.
    • Improved content-negotiation with file types that have multiple content-type options.
    • The FormContext adapter for FormHelper now supports non-default validation rule sets.
    • Added a 'match all' type to View so that fallback view classes can be implemented in the new content-negotiation feature.
    • Added deleteAsync() and clearBlocking() methods to the redis cache engine.
    • Added new methods to ErrorLoggerInterface with annotations. The new logError() and logException() methods will replace the logMessage() and log() methods respectively in 5.x. Before using the new error handling subsystem you should update any custom error loggers.
    • Improved API documentation.
    • Removed usage of string interpolation that is deprecated in PHP 8.2

    How you Can Help

    You can help by trying out the RC in your application. Please open issues for any new test failures or regressions the new version creates in your application.

    Contributors to 4.4.0-RC2

    Thank you to all the contributors that have helped with 4.4.0:

    • ADmad
    • Andrii Pukhalevych
    • Corey Taylor
    • Danial Khoshkhou
    • dependabot[bot]
    • Gerasimos
    • itosho
    • Kevin Pfeifer
    • Mark Scherer
    • Mark Story
    • OJMichael
    • othercorey
    • Remy Bos

    We would also like to thank Guarang Maheta for notifying us of a security issue in bakery.cakephp.org and helping us resolve it.

    As always, a huge thanks to all the community members that helped make this release happen by reporting issues and sending pull requests.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-4-0-RC2.zip(9.83 MB)
  • 4.3.9(May 14, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.9. This is a maintenance release for the 4.3 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.3.9. See the changelog for every commit.

    • Improved API documentation.
    • Removed redundant function calls in session handling.
    • Updated to phpstan 1.6

    Contributors to 4.3.9

    Thank you to all the contributors that helped make this release happen:

    • Mark Scherer
    • Mark Story
    • othercorey
    • Remy Bos

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-9.zip(9.78 MB)
  • 3.10.3(May 8, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 3.10.2. This is a maintenance and security release for the 3.10 branch that fixes a couple community reported issues, and patches a security vulnerability.

    Security Fixes

    The 3.10.3 release contains an opt in security fix for CsrfProtectionMiddleware. Prior to this release, if an application has a cross-site-scripting vulnerability, or an attacker has access to a victim's browser CSRF tokens could be manipulated allowing CSRF bypass. This weakness stems from CSRF middleware accepting any matching pair of tokens. With the fix applied, only tokens generated by the host application will be accepted. This fix requires opt-in because it breaks compatibility with existing CSRF tokens that may be in user's browsers/sessions. To enable the new style tokens add the following:

    // in src/Application.php
    $middlewareQueue->add(new CsrfProtectionMiddleware([
        'verifyTokenSource' => true
    ]));
    

    Bugfixes

    You can expect the following changes in 3.10.3. See the changelog for every commit.

    • Fixed a memory leak in TranslatorRegistry when loading translations from cache.

    Contributors to 3.10.3

    Thank you to all the contributors that helped make this release happen:

    • Mark Story
    • Val Bancer

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
  • 4.3.8(Apr 23, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.8. This is a maintenance release for the 4.3 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.3.8. See the changelog for every commit.

    • Improved examples in documentation blocks.
    • Fixed missing usage of bindingKey in associations generated by BelongsToMany.
    • Fixed a TypeError coming from CsrfProtectionMiddleware when cookie data contained invalid base64 encoded data.
    • Improved handling of numeric keys in cookie parsing.

    Contributors to 4.3.8

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Andrii Pukhalevych
    • Corey Taylor
    • Danial Khoshkhou
    • Gerasimos
    • Kevin Pfeifer
    • Mark Scherer
    • Mark Story

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-8.zip(9.78 MB)
  • 4.3.7(Mar 26, 2022)

    CakePHP 4.3.7 Released

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.7. This is a maintenance release for the 4.3 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.3.7. See the changelog for every commit.

    • Fixed additional errors where FileEngine could raise exceptions by calling unlink incorrectly.
    • Fixed 'table already configured' errors in reflection based fixtures when a table loads and configures another table during its initialize() hook.
    • Fixed contain() emitting errors when an association querybuilder uses both explicit fields and autoFields() at the same time.
    • Fixed PaginatorHelper::limitControl() not working with multiple-pagination.

    Contributors to 4.3.7

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Mark Story
    • Markus Ramšak
    • OJMichael
    • Val Bancer
    • ndm2
    • othercorey

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-7.zip(9.72 MB)
  • 4.4.0-RC1(Mar 19, 2022)

    The CakePHP core team is proud to announce the first release candidate of CakePHP 4.4.0. The 4.4.0 release will introduce several new features and a handful of deprecations.

    New Features

    The migration guide has a complete list of what's new in 4.4.0. We recommend you give that page a read when upgrading as it outlines the deprecations present in 4.4.

    New Feature Highlights

    • CakePHP 4.4.0 requires PHP 7.4+
    • bin/cake routes now highlights route collisions.
    • The SQLite driver now uses RETURNING * to update entities after saving with sqlite >=3.35+
    • Query::expr() was added as a shorter alias for Query::newExpr().
    • A new more extensible error handling subsystem has been added. The existing inheritance based system is now deprecated.
    • HttpsEnforcerMiddleware now has an hsts option that allows you to configure the Strict-Transport-Security header.
    • Controller::viewClasses() was added. This can be implemented by controllers that need to perform content-type negotiation. View classes will need to implement the static method contentType() to participate in content-type negotiation.

    How you Can Help

    You can help by trying out the RC in your application. Please open issues for any new test failures or regressions the new version creates in your application.

    Contributors to 4.4.0-RC1

    Thank you to all the contributors that have helped with 4.4.0:

    • ADmad
    • Alejandro Ibarra
    • Corey Taylor
    • Gerhard Lechner
    • Jorge González
    • Kevin Pfeifer
    • Mark Scherer
    • Mark Story
    • Markus Ramšak
    • saeideng

    As always, a huge thanks to all the community members that helped make this release happen by reporting issues and sending pull requests.

    Source code(tar.gz)
    Source code(zip)
  • 4.3.6(Mar 5, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.6. This is a maintenance release for the 4.3 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.3.6. See the changelog for every commit.

    • Fixed typing errors when routes converted passed parameters into objects.
    • Improved API documentation.
    • Fixed a memory leak in TranslatorRegistry when many translations were loaded from cache.
    • Improved handling of empty array typed controller action parameters.
    • Fixed required options blocking --help output in console commands.
    • CacheEngine::deleteMultiple() now attempts to delete all keys instead of stopping at the first failure.
    • Fixed regression in belong to many associations that use a junction table and finder that applies contain() to the query.

    Contributors to 4.3.6

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Corey Taylor
    • Mark Story
    • Val Bancer
    • ndm2

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-6.zip(9.71 MB)
  • 4.3.5(Feb 5, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.5. This is a maintenance release for the 4.3 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.3.5. See the changelog for every commit.

    • FormHelper now correctly detects of entity collections.
    • Improved error messages for fixture insertion errors.
    • Widened the accepted range for psr/log.
    • FormHelper checkbox and radio control hiddenField options can now be set to ''.
    • Http\Client auth adapters can now be set without App.namespace being set.
    • Fixed errors detected by newer versions of static analyzers.

    Contributors to 4.3.5

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Cees-Jan Kiewiet
    • Corey Taylor
    • Mark Story
    • Michael Hoffmann
    • othercorey

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-5.zip(9.71 MB)
  • 4.3.4(Jan 15, 2022)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.4. This is a maintenance release for the 4.3 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.3.4. See the changelog for every commit.

    • Improved exception logging. If rendering fails during the 'safe' fallback error page rendering, a log message is now recorded..
    • Added a omitted method for getting a list of tables without views from a connection.
    • Updated Schema\Collection::listTables() to omit views from the table listing. This will resolve problems with views and the new fixture system.
    • Improved MySQL table list query.
    • Improved route compiliation performance.

    Team Changes

    Since our last release post there have been a few changes in the CakePHP core team. First, we would like to welcome LordSimal who joins us from Leibnitz, Austria. LordSimal has been actively helping others in the community, improving the documentation and has contributed pull requests to both CakePHP core, and DebugKit. We would like to thank chinpei215 for his many years of involvement in CakePHP as he is leaving the team. During his tenure, chinpei215 identified and fixed several security issues and contributed greatly to i18n functionality in the framework.

    Contributors to 4.3.4

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Mark Story
    • othercorey
    • rmarsh1ua

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-4.zip(9.74 MB)
  • 4.3.3(Dec 17, 2021)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.3. This is a maintenance release for the 4.3 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.3.3. See the changelog for every commit.

    • Improved error handling when OAuth signing encounters SSL errors.
    • Fixed regression in Router::reverse() and how it handles passed arguments.
    • Fixed inserting breadcrumbs at the end of the list with insertAfter().
    • Improved API docs.
    • Improved error messages when PDO extensions are missing.

    Contributors to 4.3.3

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Andrii Pukhalevych
    • Corey Taylor
    • Juan Pablo Ramirez
    • Kevin Pfeifer
    • Mark Scherer
    • Mark Story
    • ndm2

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-3.zip(10.02 MB)
  • 3.10.2(Dec 13, 2021)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 3.10.1. This is a maintenance release for the 3.10 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 3.10.2. See the changelog for every commit.

    • Improved API docs.
    • Fixed Router::reverse() not handling passed parameters defined with setPass() properly.
    • Fixed BreadCrumbHelper::insertAt() at the last index.

    Contributors to 3.10.2

    Thank you to all the contributors that helped make this release happen:

    • Kevin Pfeifer
    • Mark Story
    • othercorey
    • R.Strittmatter

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-3-10-2.zip(10.12 MB)
  • 4.3.2(Nov 26, 2021)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.2. This is a maintenance release for the 4.3 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.3.2. See the changelog for every commit.

    • Added array type coercion to controller actions. Lists of , separated values can now be unpacked into arrays.
    • Ensure that $defaultTable is set in controllers.
    • Relaxed version contraints on psr/container.
    • Updated cache keys generated by Table::get(). Previously keys were not compatible with file based caches. The side-effect of this fix is that cache keys will change.
    • Added _urldecode option to route to allow more control on how request URLs are decoded.
    • Fixed missing milliseconds in log messages.
    • Fixed Router::reverse() not handling parameters created with Route::setPass() properly.
    • Added support for 308 HTTP status code.
    • Removed _defaultConfig from PaginatorComponent to fix default configuration defined in sub-classes from being ignored.
    • Improved API documentation.

    Contributors to 4.3.2

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Chris Hallgren
    • Corey Taylor
    • Ian den Hartog
    • Kevin Pfeifer
    • Marc Würth
    • Mark Scherer
    • Mark Story

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-2.zip(9.97 MB)
  • 4.3.1(Nov 6, 2021)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.1. This is a maintenance release for the 4.3 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.3.1. See the changelog for every commit.

    • Fixed incomplete cloning when Database\Query is cloned.
    • Fixed Query::modifier() not handling expression objects correctly.
    • Improved array typehints in API documentation blocks.
    • Fixed custom type mappings defined in Table classes not being used when inserting fixture rows with the new fixture system.
    • Improved deprecation messages for QueryExpression::case().
    • Fixed base path handling in HttpsEnforcerMiddleware.

    Contributors to 4.3.1

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Mark Scherer
    • Mark Story
    • mirko-pagliai
    • ndm2
    • othercorey
    • Remi Collet

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-1.zip(10.09 MB)
  • 3.10.1(Oct 29, 2021)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 3.10.1. This is a maintenance release for the 3.10 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 3.10.1. See the changelog for every commit.

    • Fixed radio inputs generating duplicate id attribute values when values had trailing/leading -.
    • Fixtures now only reset sequences in SQLServer if required.
    • Fix DateType not clearing time for DateTimeImmutable.
    • Fixed cascading deletes generating incorrect SQL when bindingKey values are null.

    Contributors to 3.10.1

    Thank you to all the contributors that helped make this release happen:

    • Marc Würth
    • Mark Scherer
    • Mark Story
    • othercorey

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-3-10-1.zip(10.12 MB)
  • 4.3.0(Oct 24, 2021)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.3.0. This is the first stable release of 4.3.0. 4.3.0 provides a number improvements to CakePHP.

    Upgrading to 4.3.0

    You can use composer to upgrade to CakePHP 4.3.0::

    php composer.phar require --update-with-dependencies "cakephp/cakephp:4.3.*"
    

    Deprecation Warnings

    4.3 introduces a few deprecations. All of these features will continue for the duration of 4.x but will be removed in 5.0. See the migration guide.

    What's new in 4.3.0?

    The migration guide has a complete list of what's new in 4.3.0. We recommend you give that page a read when upgrading. A few highlights from 4.3.0 are:

    • A new fixture system that allows you to use your existing migrations or SQL dump files to define schema was added. Support for cake's migrations and SQL dump files is included.
    • TestSuite\HttpMockTrait was added to make mocking HTTP client requests easier.
    • LocatorAwareTrait::fetchTable() was added to make the getTableLocator()->get() pattern more ergonomic.
    • Controller::middleware() was added. This method lets you define middleware specific to a controller, or the current controller action.
    • deprecationWarning() no longer emits duplicate warnings.
    • Form objects now support multiple validators and leverage a similar interface to the ORM to use those validators.
    • Logged SQL queries now use boolean literals making them easier to paste into a repl.
    • The cake console command was extracted into a new cakephp/repl package.
    • CspMiddleware can now transparently add nonce- based policies.
    • FormHelper will now set additional ARIA attributes automatically.
    • The ORM can now marshall date times from the user's timezone into the applications timezone transparently.
    • CakePHP's dependency on league/container was bumped to ^4.1.1 and psr/container to ^2.0.

    Contributors to 4.3.0

    Thank you to all the contributors that helped make 4.3 happen:

    • ADmad
    • andrii-pukhalevych
    • Breton Erwane
    • captain-redbeard
    • Chris Nizzardini
    • Erwane Breton
    • fabsn182
    • Jan Brabec
    • Juan Pablo Ramirez
    • Marc Würth
    • Mark Scherer
    • Mark Story
    • ndm2
    • othercorey
    • Rafael Mardones
    • Rob Rikken
    • saeideng

    As always, a huge thanks to all the community members that helped make this release happen by reporting issues and sending pull requests. 4.3.0 is a large release and would not have been possible without the community support and feedback.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-3-0.zip(10.06 MB)
  • 4.3.0-RC4(Oct 17, 2021)

    The CakePHP core team is proud to announce the first release candidate of CakePHP 4.3.0. The 4.3.0 release will introduce several new features and a handful of deprecations.

    New Features

    The migration guide has a complete list of what's new in 4.3.0. We recommend you give that page a read when upgrading as it outlines the deprecations present in 4.3.

    Changes from RC3

    Since the release of 4.3.0-RC3 the following changes have been made:

    • A new fluent builder for CASE expressions was added to QueryExpression.
    • QueryExpression::addCase() is now deprecated.
    • Associations that load records with the subquery strategy, no longer include a LIMIT clause if there is no ORDER BY on the query.
    • CakePHP's dependency on league/container was bumped to ^4.x this may cause type errors with ServiceProvider implementations.
    • The new fixture system was further refined, both in API and performance. These changes may cause incompatibilities with applications using previous release candidates.
    • Fixed the singular form of 'lenses' to 'lens'.

    How you Can Help

    You can help by trying out the RC in your application. Please open issues for any new test failures or regressions the new version creates in your application.

    Contributors to 4.3.0-RC4

    Thank you to all the contributors that have helped with 4.3.0:

    • ADmad
    • Corey Taylor
    • Mark Scherer
    • Mark Story
    • ndm2

    As always, a huge thanks to all the community members that helped make this release happen by reporting issues and sending pull requests.

    Source code(tar.gz)
    Source code(zip)
  • 4.2.10(Oct 14, 2021)

    The CakePHP core team is happy to announce the immediate availability of CakePHP 4.2.10. This is a maintenance release for the 4.2 branch that fixes several community reported issues.

    Bugfixes

    You can expect the following changes in 4.2.10. See the changelog for every commit.

    • Fix a TypeError in CsrfProtectionMiddleware when invalid data was provided.
    • Fixed MailContains constraint from escaping patterns multiple times.
    • Improved API documentation.
    • Added workaround for breaking change in PHPUnit 9.5.10.
    • Fixed incorrect SQL being generated when a HasMany association has a null value, and the association has cascadeCallbacks.
    • Fix DateType not clearing time values for DateTimeImmutable. This scenario can arise when using the cakephp/orm package directly.
    • Limit clauses are ignored if no order exists when using a subquery strategy for HasMany associations.

    Contributors to 4.2.10

    Thank you to all the contributors that helped make this release happen:

    • ADmad
    • Corey Taylor
    • Julian Pollmann
    • Kevin Pfeifer
    • Mark Scherer
    • Mark Story
    • Rolf Kaiser

    As always, we would like to thank all the contributors that opened issues, created pull requests or updated the documentation.

    Source code(tar.gz)
    Source code(zip)
    cakephp-4-2-10.zip(9.88 MB)
Elgg is an open source rapid development framework for socially aware web applications.

Elgg Elgg is an open source rapid development framework for socially aware web applications. Features Well-documented core API that allows developers

Elgg 1.6k Dec 27, 2022
Motan - a cross-language remote procedure call(RPC) framework for rapid development of high performance distributed services

Motan-PHP Overview Motan is a cross-language remote procedure call(RPC) framework for rapid development of high performance distributed services.

Weibo R&D Open Source Projects 81 Nov 19, 2022
Official Zend Framework repository

Welcome to the Zend Framework 3.0 Release! RELEASE INFORMATION Zend Framework 3.0.1dev This is the first maintenance release for the Zend Framework 3

Zend Framework 5.6k Dec 29, 2022
An OPCache Preloader for CakePHP 4.x applications

CakePHP Preloader An OPCache preloader for CakePHP. Reference: https://www.php.net/manual/en/opcache.preloading.php This package is meant to provide a

Chris Nizzardini 8 Jun 22, 2022
Sunhill Framework is a simple, fast, and powerful PHP App Development Framework

Sunhill Framework is a simple, fast, and powerful PHP App Development Framework that enables you to develop more modern applications by using MVC (Model - View - Controller) pattern.

Mehmet Selcuk Batal 3 Dec 29, 2022
High-Performance Long-Living PHP Framework for modern enterprise application development

Documentation · Discord · Telegram · Twitter Spiral Framework is a High-Performance Long-Living Full-Stack framework and group of over sixty PSR-compa

Spiral Scout 1.4k Jan 1, 2023
QPM, the process management framework in PHP, the efficient toolkit for CLI development. QPM provides basic daemon functions and supervision mechanisms to simplify multi-process app dev.

QPM QPM全名是 Quick(or Q's) Process Management Framework for PHP. PHP 是强大的web开发语言,以至于大家常常忘记PHP 可以用来开发健壮的命令行(CLI)程序以至于daemon程序。 而编写daemon程序免不了与各种进程管理打交道。Q

Comos 75 Dec 21, 2021
:gem: Go! AOP PHP - modern aspect-oriented framework for the new level of software development

Go! Aspect-Oriented Framework for PHP Go! AOP is a modern aspect-oriented framework in plain PHP with rich features for the new level of software deve

Go! Aspect-Oriented Framework 1.6k Dec 29, 2022
PHPLucidFrame (a.k.a LucidFrame) is an application development framework for PHP developers

PHPLucidFrame (a.k.a LucidFrame) is an application development framework for PHP developers. It provides logical structure and several helper utilities for web application development. It uses a functional architecture to simplify complex application development. It is especially designed for PHP, MySQL and Apache. It is simple, fast, lightweight and easy to install.

PHPLucidFrame 19 Apr 25, 2022
li₃ is the fast, flexible and most RAD development framework for PHP

li₃ You asked for a better framework. Here it is. li₃ is the fast, flexible and the most RAD development framework for PHP. A framework of firsts li₃

Union of RAD 1.2k Dec 23, 2022
☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Serve

☄️ PHP CLI mode development framework, supports Swoole, WorkerMan, FPM, CLI-Server / PHP 命令行模式开发框架,支持 Swoole、WorkerMan、FPM、CLI-Server

Mix PHP 1.8k Dec 29, 2022
Hamtaro - the new web framework for front-end / back-end development using Php and Javascript.

Hamtaro framework About Technologies Controllers Components Commands Front-end development Getting Started About Hamtaro is the new web framework for

Phil'dy Jocelyn Belcou 3 May 14, 2022
This repository include my own PHP MVC Framework

PHP OWN MVC FRAMEWORK Kendimi geliştirmek ve modern PHP Framework'lerinin işleyişini kavram amacıyla inşa ettiğim profesyonele yakın PHP MVC Framework

Yılmaz Kadan 9 Nov 24, 2022
Pods is a development framework for creating, extending, managing, and deploying customized content types in WordPress.

Pods Framework Pods is a development framework for creating, extending, managing, and deploying customized content types in WordPress. Description Che

Pods Foundation, Inc 982 Jan 4, 2023
This repository contains a library of optional middleware for your Slim Framework application

Slim Framework Middleware This repository contains a library of optional middleware for your Slim Framework application. How to Install Update your co

Slim Framework 47 Nov 7, 2022
Symplify - Making Everyday PHP Development Simple

Symplify - Making Everyday PHP Development Simple In this monorepo you'll find PHP packages that help you with: your first coding standard maintenance

null 628 Dec 19, 2022
💾 High-performance PHP application server, load-balancer and process manager written in Golang. RR2 releases repository.

RoadRunner is an open-source (MIT licensed) high-performance PHP application server, load balancer, and process manager. It supports running as a serv

Spiral Scout 45 Nov 29, 2022
A skeleton repository for Spatie's PHP Packages

:package_description This package can be used as to scaffold a framework agnostic package. Follow these steps to get started: Press the "Use template"

Spatie 335 Dec 25, 2022
Platform for Citizen Engagement, Smart Communities, Smart Cities in the context of the Sustainable Development Goals 🏙️👩‍💻👨‍💼🙋‍♀️🙋‍♂️🦾🤖

Civikmind Plataforma Libre y de código abierto para la Participación Ciudadana, Veeduría Ciudadana, Gestión de Comunidades Inteligentes, Ciudades Inte

Smart Cities Community 29 Dec 8, 2022