PHP libraries - 5 minutes starter guide

Create a project

First, prepare Maven and follow the preparation instructions.
Next, type the following Maven goal in your command line and execute it (Note that the archetypes are different for PHP 4 and PHP 5.):

PHP 4:
mvn archetype:generate \
-DarchetypeGroupId=org.phpmaven \
-DarchetypeArtifactId=php4-lib-archetype \
-DarchetypeVersion=1.0-BETA-1 \
-DgroupId=org.sample \
-DartifactId=my-app \
PHP 5:
mvn archetype:generate \
-DarchetypeGroupId=org.phpmaven \
-DarchetypeArtifactId=php5-lib-archetype \
-DarchetypeVersion=1.0-BETA-1 \
-DgroupId=org.sample \
-DartifactId=my-app \
			

The result will look like this:

my-app 
	|-- pom.xml 
	`-- src 
		|-- main 
			 `-- php 
				 `-- org 
					 `-- sample  
						`-- app.php 
		|`-- test 
			`-- php 
				`-- org 
					`-- sample 
						`-- apptest.php
		|`-- site
			`-- doxygen 
				`-- doxygen.conf
			

  • src/main/php - contains the project source code
  • the src/test/php - contains the test source code
  • pom.xml The project's Project Object Model, or POM, looks like this:

The POM

PHP 4 (1.*) and PHP 5 (3.*) use different PHPUnit versions. Accordingly, there are different dependencies in the POM.

<?xml version="1.0" encoding="UTF-8"?>
<project>
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.phpsample</groupId>
	<artifactId>my-app</artifactId>
	<packaging>php</packaging>
	<version>1.0-SNAPSHOT</version>
	<build>
		<plugins>
			<plugin>
				<groupId>org.phpmaven</groupId>
				<artifactId>maven-php-plugin</artifactId>
				<extensions>true</extensions>
			</plugin>
		</plugins>
	</build>


	<dependencies>
		<!--  phpUnit for PHP 5 -->
		<dependency>
			<groupId>org.phpunit</groupId>
			<artifactId>phpunit5</artifactId>
			<version>3.2.9-SNAPSHOT</version>
		</dependency>

		<!--  phpUnit for PHP 4 -->
		<dependency>
			<groupId>org.phpunit</groupId>
			<artifactId>phpunit4</artifactId>
			<version>1.3.2-SNAPSHOT</version>
		</dependency>
	</dependencies>

	<reporting>
		<plugins>
		<!-- START SNIPPET: doxygen -->
		<!-- Doxygen Documentation  -->
			<plugin>
				<groupId>org.phpmaven</groupId>
				<artifactId>maven-php-plugin</artifactId>
				<!-- Optional -->
				<reportSet>
						<reports>
							<report>doxygen</report>
							<report>phpdocumentor</report>
						</reports>
					</reportSet>
					<!-- / Optional -->
			</plugin>
		<!-- END SNIPPET: doxygen -->
		<!-- Surfire Documentation -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-report-plugin</artifactId>
				<version>2.4</version>
				<reportSets>
					<reportSet>
						<reports>
							<report>report-only</report>
						</reports>
					</reportSet>
				</reportSets>
			</plugin>
		</plugins>
	</reporting>
</project>

What have I just done?

What have I just done?

You have just executed the Maven goal archetype:generate and passed various parameters to that goal. The prefix archetype is the plugin containing the goal. This goal created a default project structure for your PHP project.

Build the project

Switch to your sample project directory
cd my-app
and run:
mvn package
The command line will print out various actions, ending with the following:
 ...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6 seconds
[INFO] Finished at: Thu Jul 20 19:15:06 CDT 2008
[INFO] Final Memory: 3M/6M
[INFO] ------------------------------------------------------------------------			
			
Maven created a jar package under the project's target folder.

Project documentation

Go to the "Documentation" section.