Phinx relies heavily on external contributions in order to make it the best database migration tool possible. Without the support of our 70+ contributors we wouldn't be where we are today! We encourage anyone to submit documentation enhancements and code.
Issues, feature requests and bugs should be submitted using the Github issue tool: https://github.com/robmorgan/phinx/issues.
This document briefly outlines the requirements to contribute code to Phinx.
Before you submit your pull request take a moment to answer the following questions.
Answering 'YES' to all questions will increase the likelyhood of your PR being accepted!
- Have I implemented my feature for as many database adapters as possible?
- Does my new feature improve Phinx's performance or keep it consistent?
- Does my feature fit within the database migration space?
- Is the code entirely my own and free from any commercial licensing?
- Am I happy to release my code under the MIT license?
- Is my code formatted using the PSR-2 coding standard?
Note: We accept bug fixes much faster into our development branch than features.
Great, so you want to contribute. Let's get started:
-
Start by forking Phinx on GitHub: https://github.com/robmorgan/phinx
-
Clone your repository to a local directory on your development box.
-
If you do not have Composer set up already, install it:
curl -s https://getcomposer.org/installer | php
-
Change to your Phinx clone directory and pull the necessary dependencies:
php composer.phar install --dev
-
Copy the
phpunit.xml.dist
template tophpunit.xml
and change the configuration to suit your environment. -
Run the unit tests locally to ensure they pass. If you are not using any particular adapter you can disable it in the
phpunit.xml
file. -
Write the code and unit tests for your bug fix or feature.
-
Add any relevant documentation.
-
Run the unit tests again and ensure they pass.
-
Open a pull request on the Github project page. Ensure the code is being merged into the latest development branch and not
master
.
The Phinx documentation is stored in the docs directory using the RestructedText format. All documentation merged to master
is automatically published to the Phinx documentation site available
at: http://docs.phinx.org.