Phing

Aus php bar
Wechseln zu: Navigation, Suche

Phing ist ein Build Tool für PHP Projekte und in PHP geschrieben. Phing bietet vergleichbare Funktionaltität wie GNU make. Phing basiert auf Apache Ant (Build Tool, welches vor allem in der JAVA Welt verwendet wird). Die Verwendung ist leider nicht so verbreitet wie etwa rake (ruby build tool) für Ruby Entwickler.

Phing ist plattformunabhängig, erweiterbar und kommt mit einer grossen Menge an verwendbaren Tasks. Das Build file ist eine XML Datei.


Beispiel

phing Anweisung um das Target `build' auszuführen, da `prepare' als depends im target angegeben ist, wird `prepare' vorher ausgeführt.

$> phing build

Die build.xml

<?xml version="1.0"?>

<project name="MyProjectName" default="build" basedir="."
	description="This is an Phing buildfile.">
	<target name="prepare">
		<mkdir dir="reports/coverage" />
		<mkdir dir="reports/tests" />
		<mkdir dir="docs" />
 
	</target>

	<target name="docs">
		<phpdoc title="MyProjectName" destdir="docs" output="HTML:Smarty:PHP">
			<fileset dir="./src">
				<include name="**/*.php" />
			</fileset>
		</phpdoc>
	</target>

	<target name="lint">
		<phplint>
			<fileset dir="src">
				<include name="**/*.php" />
			</fileset>
		</phplint>
	</target>

	<target name="setup">
		<!--  directories -->

		<chmod file="images" mode="0775" verbose="true" />

		<!-- set up defaults  -->

		<echo>Setup some initial values</echo>
		<echo>(they are also editable later)</echo>

		<!-- Getting string input -->

		<input propertyname="userName" defaultValue="demo"
			promptChar="?">user Name</input>

		<input propertyname="userPassword" defaultValue="demo"
			promptChar="?">user password</input>

		<input propertyname="emailAddress" defaultValue="you@domain.tld"
			promptChar="?">your email address</input>

		<echo>username: ${userPassword}</echo>
		<echo>user password: ${userPassword}</echo>
		<echo>your email adress: ${emailAdress}</echo>

	</target>


	<target name="build" depends="prepare">
		<zip destfile="project.zip" basedir="src" />
		<tar destfile="project.tgz" compression="gzip" basedir="src" />
	</target>

	<target name="clean">
		<delete dir="reports" />
		<delete dir="docs" />
		<delete file="project.zip" />
		<delete file="project.tgz"></delete>
	</target>
</project>


Vorteile

  • plattformunabhängig (xml, anstelle bash oder batch skripten)
  • erweiterbar durch PHP Klassen
  • gute Dokumentation


Links