PHing Is Not GNU make

Phing is a PHP project build system or build tool based on ​Apache Ant. You can do anything with it that you could do with a traditional build system like GNU make, and its use of simple XML build files and extensible PHP "task" classes make it an easy-to-use and highly flexible build framework.

Features include running PHPUnit unit tests (including test result and coverage reports), file transformations (e.g. token replacement, XSLT transformation, template transformations), file system operations, interactive build support, SQL execution, Git/Subversion operations, tools for creating PEAR packages, documentation generation (PhpDocumentor, ApiGen) and much, much more.

If you find yourself writing custom scripts to handle the packaging, deploying, or testing of your applications, then we suggest looking at Phing. Pre-packaged with numerous out-of-the-box operation modules (tasks), and an easy-to-use OO model to extend or add your own custom tasks.

Features

Simple XML buildfiles
Rich set of provided tasks
Easily extendable via PHP classes
Works on Linux, Mac & Windows
No required external dependencies
Runs great on PHP 7

Installation

Composer

Install Phing by adding a dependency to phing/phing to the require-dev or require section of your project's composer.json configuration file, and running 'composer install':

{
    "require-dev": {
        "phing/phing": "2.*"
    }
}

Phar

Download the Phar archive. The archive can then be executed by running:

php phing-latest.phar

PEAR

You can install Phing by adding the pear.phing.info channel to your PEAR environment and then installing Phing using the phing channel alias and phing package name:

pear channel-discover pear.phing.info
pear install [--alldeps] phing/phing

For more info, refer to the PEAR channel.

Manual install

The full Phing package has a more traditional directory organization and contains the full documentation, test scripts, and build.xml files for (e.g.) building the PEAR-installable package. Please download one of the packages below if you would like to install the full Phing package.

Documentation

Phing User Guide

The most comprehensive source for Phing documentation.

Stable version

Or, you can install the phingdocs PEAR package:

pear channel-discover pear.phing.info
pear install phing/phingdocs
Development (trunk/master) version
RELAX NG schema
API documentation
Tutorials
Presentations

More Phing (related) presentations can be found here: http://www.slideshare.net/tag/phing

Contribute

We contributions! There are a number of ways that you can get involved in Phing development.

Help us spot & fix bugs

We greatly appreciate it when users report issues or come up with feature requests. However, there are a few guidelines you should observe before submitting a new issue:

  • Make sure the issue has not already been submitted, by searching through the list of (closed) issues.
  • Support and installation questions should be asked on Twitter, Slack or IRC, not filed as issues.
  • Give a good description of the problem, this also includes the necessary steps to reproduce the problem!
  • If you have a solution - please tell us! This doesn't have to be code. We appreciate any snippets, thoughts, ideas, etc that can help us resolve the issue.

Issues can be reported on ​GitHub.

Documentation

We can always use better documentation. The user guide is written in DocBook and can be found in docs/docbook5/en/source. The source is rendered to multiple formats (html, pdf, etc.), these can be found in docs/docbook5/en/output).

Unit tests

To successfully run all Phing tests, please ensure you have the following setup:

  • PEAR installed, channel pear.phing.info discovered
  • On Linux: package python-docutils installed
  • php.ini setting phar.readonly set to Off

Then, perform the following steps (on a clone/fork of Phing):

composer install
cd test
../bin/phing

Pull requests

The best way to submit code to Phing is to make a Pull Request on GitHub. Please keep your pull requests clean and concise: squash commits, don't introduce unnecessary (whitespace) changes, use verbose commit messages. Phing's source code is formatted according to the PSR-2 standard.

Phing's source code is hosted on GitHub.

Support

There are several ways to get help if you are having problems with Phing.

Follow @phingofficial on Twitter.

Join the Slack team.

Join the #phing IRC channel on ​Freenode.