| 1 |
_________________________ |
|---|
| 2 |
P H I N G |
|---|
| 3 |
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 |
What is it? |
|---|
| 7 |
----------- |
|---|
| 8 |
|
|---|
| 9 |
Phing is a PHP based build tool. In theory it is kind of like "make" |
|---|
| 10 |
without makes drawbacks and with the full portability and performance |
|---|
| 11 |
of PHP. (PH)pmake (I)s (N)ot (G)numake |
|---|
| 12 |
|
|---|
| 13 |
Why? |
|---|
| 14 |
---- |
|---|
| 15 |
|
|---|
| 16 |
Why another build tool when there is already make, gnumake, nmake, jam, ant, |
|---|
| 17 |
and others? Because all those tools have limitations that the binarycloud |
|---|
| 18 |
development team could not live with when developing software across |
|---|
| 19 |
different platforms. Make-like tools are inherently shell-based: they |
|---|
| 20 |
evaluate a set of dependencies, then execute commands not unlike what you |
|---|
| 21 |
would issue on a shell. |
|---|
| 22 |
|
|---|
| 23 |
This means that you can easily extend these tools by using or writing any |
|---|
| 24 |
program for the OS that you are working on; however, this also means that |
|---|
| 25 |
you limit yourself to the OS, or at least the OS type, such as Unix, that |
|---|
| 26 |
you are working on. |
|---|
| 27 |
|
|---|
| 28 |
Makefiles are inherently evil as well. Anybody who has worked on them for |
|---|
| 29 |
any time has run into the dreaded tab problem. "Is my command not executing |
|---|
| 30 |
because I have a space in front of my tab?!!". Tools like Jam took care of |
|---|
| 31 |
this to a great degree, but still have yet another format to use and |
|---|
| 32 |
remember. Of course there is the Java based build tool ant, that is very |
|---|
| 33 |
good approach to what now Phing is. But still based on Java you have to have |
|---|
| 34 |
at least a running JRE installation on your plattfrom. |
|---|
| 35 |
Great for Java projects but we thought this is very consistent way to build |
|---|
| 36 |
a PHP based project. Additionally ant does not support a autoconf tool that |
|---|
| 37 |
writes out proper buildfiles based on some simple rules prior defined in a |
|---|
| 38 |
XML Configuration file. |
|---|
| 39 |
|
|---|
| 40 |
Phing is different. Instead of a model where it is extended with shell-based |
|---|
| 41 |
commands, Phing is extended using PHP classes. Instead of writing shell |
|---|
| 42 |
commands, the configuration files are XML-based, calling a target tree where |
|---|
| 43 |
various tasks get executed. Each task is run by an object that implements |
|---|
| 44 |
a particular Task action. |
|---|
| 45 |
|
|---|
| 46 |
Of course, this removes some of the expressive power that is inherent in |
|---|
| 47 |
being able to construct a shell command such as |
|---|
| 48 |
% `find . -name foo -exec rm {}` |
|---|
| 49 |
but it gives you the ability to be cross-platform - to work anywhere and |
|---|
| 50 |
everywhere. And if you really need to execute a shell command, Phing has an <exec> |
|---|
| 51 |
task that allows different commands to be executed based on the operating |
|---|
| 52 |
system it is executing on. |
|---|
| 53 |
|
|---|
| 54 |
The Latest Version |
|---|
| 55 |
------------------ |
|---|
| 56 |
|
|---|
| 57 |
Details of the latest version can be found on the Phing homepage |
|---|
| 58 |
<http://phing.info/>. |
|---|
| 59 |
|
|---|
| 60 |
Documentation |
|---|
| 61 |
------------- |
|---|
| 62 |
|
|---|
| 63 |
Documentation is available in XHTML format in the docs/ directory. In particular, |
|---|
| 64 |
open the docs/phing_guide/book/index.html in a frames-compatible browser to see the |
|---|
| 65 |
phing user guide. |
|---|
| 66 |
|
|---|
| 67 |
For online documentation, you can also visit the Phing website: http://phing.info/ |
|---|
| 68 |
|
|---|
| 69 |
Licensing |
|---|
| 70 |
--------- |
|---|
| 71 |
|
|---|
| 72 |
This software is licensed under the terms you may find in the file |
|---|
| 73 |
named "LICENSE" in this directory. |
|---|
| 74 |
|
|---|
| 75 |
Thanks for using PHING. |
|---|
| 76 |
|
|---|
| 77 |
|
|---|
| 78 |
--$Id$ |
|---|