CakePHP loves to welcome your contributions. There are several ways to help out:
- Create an issue on GitHub, if you have found a bug
- Write test cases for open bug issues
- Write patches for open bug/feature issues, preferably with test cases included
- Contribute to the documentation
There are a few guidelines that we need contributors to follow so that we have a chance of keeping on top of things.
Help us keep CakePHP open and inclusive. Please read and follow our Code of Conduct.
- Make sure you have a GitHub account.
- Submit an issue, assuming one does not already exist.
- Clearly describe the issue including steps to reproduce when it is a bug.
- Make sure you fill in the earliest version that you know has the issue.
- Fork the repository on GitHub.
- Create a topic branch from where you want to base your work.
- This is usually the current default branch -
4.x
right now. - To quickly create a topic branch based on
4.x
git branch 4.x/my_contribution 4.x
then checkout the new branch withgit checkout 4.x/my_contribution
. Better avoid working directly on the4.x
branch, to avoid conflicts if you pull in updates from origin.
- This is usually the current default branch -
- Make commits of logical units.
- Check for unnecessary whitespace with
git diff --check
before committing. - Use descriptive commit messages and reference the #issue number.
- Core test cases, static analysis and codesniffer should continue to pass.
- Your work should apply the CakePHP coding standards.
- Bugfix branches will be based on the current default branch -
4.x
right now. - New features that are backwards compatible will be based on the appropriate
next
branch. For example if you want to contribute to the next 4.x branch, you should base your changes on4.next
. - New features or other non backwards compatible changes will go in the next major release branch.
BC breaking
code changes mean, that a given PR introduces code changes which can't be performed by everyone without the need to manually adjust code.
Here are some rules which prevent BC breaking
code changes:
- Configuration doesn't need to change
- Public API doesn't change. For example, any user land code using/overriding public methods shouldn't break.
Also see our current Release Policy
- Push your changes to a topic branch in your fork of the repository.
- Submit a pull request to the repository in the CakePHP organization, with the correct target branch.
To run the test cases locally use the following command:
composer test
You can copy file phpunit.xml.dist
to phpunit.xml
and modify the database
driver settings as required to run tests for a particular database.
To run the sniffs for CakePHP coding standards:
composer cs-check
Check the cakephp-codesniffer repository to set up the CakePHP standard. The README contains installation info for the sniff and phpcs.
To run static analysis tools PHPStan and Psalm you first have to install the additional packages via phive.
composer stan-setup
And after that perform the checks via:
composer stan
Note that updating the baselines need to be done with the same PHP version it is run online. That is usually the minimum version. Make sure to "composer install" and set up the stan tools with it and then also execute them.
If you've found a security related issue in CakePHP, please don't open an issue in github. Instead, contact us at [email protected]. For more information on how we handle security issues, see the CakePHP Security Issue Process.