Jump to content






Photo

Part 1 :: ทำความรู้จักกับ Maven for PHP กัน

Posted by up1 , in php, Uncategorized 05 December 2011 · 1514 views

Maven for PHP คืออะไร
เป็นเครื่องมือสำหรับช่วยจัดการ life cycle ต่างๆ ของการพัฒนา รวมทั้งเอกสารและรายงานต่างๆ ของ php project โดยสนับสนุน php 4 และ 5

เทียบ life cycle กับ Maven for JAVA กันดูนะ
Attached Image

โดย Maven จะใช้
- PHPUnit สำหรับการทำ unit testing
- Doxygen และ phpDocumentor สำหรับการสร้าง api document แบบอัตโนมัติ

Quote

ซึ่งโดยรวมแล้วจะไม่เหมือน Maven for JAVA นะครับ ซึ่งมันใช้สำหรับการจัดการ dependency libraries ต่างๆ รวมทั้งการจัดการ life cycle ของการ build, compile, run และ deploy ได้

ดังนั้น Maven for PHP ไม่ได้มาแทน PEAR แต่เข้ามาช่วยจัดการเรื่องเอกสาร และ life cycle ของการพัฒนา

ก่อนที่จะสรุปว่ามันคืออะไร และมีประโยชน์อย่างไรบ้างนั้น เราลองมาติดตั้งและเล่นกันหน่อย ว่ามันสามารถช่วยเราได้จริงไหม

ขั้นตอนการติดตั้งมีดังนี้ โดยผมใช้ OS คือ Windows XP
1. ทำการ download maven และติดตั้งไปที่เครื่อง
http://maven.apache.org/download.html

สามารถทดสอบการติดตั้ง maven ในเครื่องเราได้ โดยไปที่ command แล้ว พิมพ์คำว่า mvn จะต้องแสดงผลดังรูป
Attached Image

และให้ทำการ config file setting.xml ของ Maven เพิ่มเติมดังนี้

# เป็นการเพิ่ม profile เพื่อกำหนด repository ของ maven for php ให้ maven รู้จัก โดยสร้างไว้ที่ C:\Documents and Settings\<user name>\.m2

<settings>
	<profiles>
		<profile>
			<id>profile-php-maven</id>
			<pluginRepositories>
				<pluginRepository>
					<id>release-repo1.php-maven.org</id>
					<name>PHP-Maven 2 Release Repository</name>
					<url>http://repo1.php-maven.org/release</url>
					<releases>
						<enabled>true</enabled>
					</releases>
				</pluginRepository>
				<pluginRepository>
					<id>snapshot-repo1.php-maven.org</id>
					<name>PHP-Maven 2 Snapshot Repository</name>
					<url>http://repo1.php-maven.org/snapshot</url>
					<releases>
						<enabled>false</enabled>
					</releases>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</pluginRepository>
			</pluginRepositories>
			<repositories>
				<repository>
					<id>release-repo1.php-maven.org</id>
					<name>PHP-Maven 2 Release Repository</name>
					<url>http://repo1.php-maven.org/release</url>
					<releases>
						<enabled>true</enabled>
					</releases>
				</repository>
				<repository>
					<id>snapshot-repo1.php-maven.org</id>
					<name>PHP-Maven 2 Snapshot Repository</name>
					<url>http://repo1.php-maven.org/snapshot</url>
					<releases>
						<enabled>false</enabled>
					</releases>
					<snapshots>
						<enabled>true</enabled>
					</snapshots>
				</repository>
			</repositories>
		</profile>
	</profiles>

	<activeProfiles>
		<activeProfile>profile-php-maven</activeProfile>
	</activeProfiles>
</settings>


2. ทำการติดตั้งและ config php ซึ่ง คิดว่าทุกๆ เครื่องน่าจะติดตั้งไปแล้ว แต่น่าจะยังไม่ config ให้สามารถ run php ได้ใน command
โดยเป้าหมายคือ ต้องสามารถ run php ใน command แล้วแสดงผลดังนี้
Attached Image

แต่ถ้า run ไม่ได้ ให้ทำการ config environment variable ชื่อ PATH ดังนี้
set php_home=c:\php    #ผมติดตั้ง php ใน folder c:\php ซึ่งใน folder นี้มี file php.exe
set PATH=.;%php_home%;%PATH%

3. ทำการติดตั้ง Doxygen และ phpDocumentor สำหรับการสร้าง api document และ report ต่างๆ

ทำการ download มาที่เครื่อง ตาม OS ที่ใช้กันอยู่ โดยผมใช้ Windows XP นะครับ ก็ติดตั้งและ config เลย และสามารถทดสอบว่าเรา config ได้ถูกหรือไม่ ก็ไปทดสอบใน command เหมือนเดิม ดังนี้

>doxygen
Attached Image

>phpdoc
Attached Image

4. เมื่อทุกอย่างเรียบร้อย เรามาเริ่มสร้าง project กันเลย
ในการสร้าง project นั้นจะแบ่งตาม version ของ php ซึ่งผมใช้ php 5 ก็สร้างด้วยคำสั่งดังนี้

Quote

mvn archetype:generate
-DarchetypeGroupId=org.phpmaven
-DarchetypeArtifactId=php5-lib-archetype
-DarchetypeVersion=1.1
-DgroupId=org.sample
-DartifactId=my-app

โดยครั้งแรกที่ทำการ run จะช้ามากมาย เนื่องจาก maven จะไปทำการ download libraries ต่างๆ ที่จำเป็นมาไว้ที่เครื่องของเรา ซึ่งในครั้งต่อไปจะไม่ช้าแล้ว

ผลการทำงานจะบอกว่า Successful นะ ถ้าไม่แสดงว่ามีปัญหาอะไรเกิดขึ้นแล้ว
Attached Image

ผลที่ได้คือ folder ที่มีโครงสร้างดังรูป
Attached Image

โดย file และ folder mี่เราควรรู้ประกอบไปด้วย
- folder src/main/php ไว้สำหรับเก็บ sourcecode php ของ project
- folder src/test/php ไว้สำหรับเก็บ sourcecode สำหรับการทำ unit test ของ project
- folder /src/site ไว้สำหรับเก็บเอกสารต่างๆ ที่ถูกสร้างขึ้นมาจาก doxygen และ phpDocumentor
- file pom.xml คือ maven config file ของ project เรา ซึ่งอยากรู้ว่ามันหน้าตาเป็นอย่างไรก็ลองเปิดเข้าไปดูเลยครับ

5. ทำการสร้างเอกสารต่างๆ ของ php project กันดู
ทำการแก้ไข file pom.xml ดังนี้

#เพิ่ม doxygen และ phpdocumentor เข้าไป


ต่อมาทำการ run
>mvn site

ผลลัพธ์ที่ได้เป็นดังนี้ [กว่าจะทำงานเสร็จก้รอหน่อยนะครับ download เยอะหน่อย]
Attached Image

โดยระบบจะทำการสร้าง api document ต่างๆ ขึ้นมาตาม file config ใน
-src/site/doxygen/doxygen.conf
-src/site/phpdoc/phpdoc.conf

เพียงเท่านี้ เราจะจะพอเห็นภาพคร่าวๆ ของ Maven for PHP ว่าเป็นอย่างไรกันบ้าง ซึ่งสรุปแล้ว นำสิ่งต่างๆ เหล่านี้มารวมกัน ซึ่งทำให้ง่ายต่อการใช้งาน
  • build php project ซึ่งตรงนี้ผมเคยใช้ phing มาช่วย
  • สร้าง api document
  • ทำ report ของการทดสอบ หรือ unit testing

ใน part ต่อๆ ไป จะอธิบายถึงการนำมาใช้งานกับ php web project และการทำ unit testing น่าจะทำให้เห็นประโยชน์มากยิ่งขึ้น

Reference Resources
Maven for PHP
Doxygen
PHPDocumentor




Search My Blog

October 2014

S M T W T F S
   1234
567891011
12131415161718
19202122232425
2627282930 31