日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 數(shù)據(jù)庫 > access > PHP 實現(xiàn)的項目構(gòu)建工具:Phing

PHP 實現(xiàn)的項目構(gòu)建工具:Phing

來源:程序員人生   發(fā)布時間:2014-09-25 00:46:48 閱讀次數(shù):4796次

前言

Phing 是一個 PHP 實現(xiàn)的項目構(gòu)建工具。按照官方文檔的說法,你可以用它做任何傳統(tǒng)的構(gòu)建(build/make)工具(比如 Java 的 Ant,GNU Make 等)能做的所有工作。PHP 中比較有名的 framework: Symfony 就用到了 Phing — 順便提一下,Symfony 中還用到了另外一個 PHP 的輕量級 build 工具: PHP Pake(http://www.pake-project.com/) 。

下面的文檔由 httpnet 翻譯,本人( Hick )整理,網(wǎng)頁中只提供了部分內(nèi)容摘要,請下載 pdf 文檔查看全文。本人也在學(xué)習(xí)階段,錯漏之處歡迎指正。

官方網(wǎng)站:http://phing.info/
用戶文檔:http://phing.info/docs/guide/2.2.0/
PDF 下載:Phing 用戶指南
原文地址:http://blog.csdn.net/httpnet/archive/2005/04/20/354864.aspx
本文地址:http://www.hickwu.com/?p=12

Phing 簡介

Phing 是一個基于 Apache Ant 的項目代碼構(gòu)建系統(tǒng).你可以用她做傳統(tǒng)的構(gòu)建系統(tǒng)能做的任何事情,比如 GNU make, 并且 Phing 使用簡單的XML構(gòu)建文件和可擴(kuò)展的”任務(wù)”使之成為易于使用和極具可擴(kuò)展性的框架.

因為 Phing 是基于 Ant 的,所以本手冊部分內(nèi)容是摘自 Ant 手冊.

Phing源自Binarycloud的一個子項目.Binaryclound是一個高度工程化的框架,為了在企業(yè)環(huán)境中使用而設(shè)計.Binarycloud廣泛使用XML來存儲關(guān)于項目的元數(shù)據(jù)(配置,節(jié)點,窗口小部件,站點結(jié)構(gòu),等等).

因為Binarycloud是為PHP構(gòu)建的,在每一個頁面請求上執(zhí)行XML處理和轉(zhuǎn)換是不切實際的.Phing用于”編譯”XML元數(shù)據(jù)為可被PHP引擎處理的數(shù)組形式.

當(dāng)然, XML ”編譯”只是 Binarycloud 使用 Phing 構(gòu)建系統(tǒng)的許多方法中的一個. Phing 構(gòu)建系統(tǒng)使你能夠:

1. 從單一的源代碼樹構(gòu)建多語言頁面.

2. 在單個 XML 文件中聚集元數(shù)據(jù)(Metadata)并且用多個不同的 XSLT 生成幾個文件.(譯者注:在 XSLT2.0 規(guī)范中,消除了1.0規(guī)范只能有一個輸入一個輸出的限制,現(xiàn)在我們可以做到單一輸入來生成多個輸出文件)

最初, Binarycloud 使用 GNU make 構(gòu)建系統(tǒng),但是,這樣有些缺點. 在 makefile 中的”Space before tab problem”問題.實際上,它僅在 UNIX 系統(tǒng)上沒有問題.因此需要尋找一個更好的構(gòu)架系統(tǒng). Apache Ant 是一個不錯的選擇—它使用 XML 構(gòu)建文件和模塊化的設(shè)計.但問題是 Ant 用 java 寫成,要使用它你必須得在你得計算機(jī)上安裝 Java 虛擬機(jī).

因此, Phing 開始開發(fā)了, Phing 是一個借助于 Ant 的思想用 PHP 寫成的構(gòu)建系統(tǒng).第一版同時設(shè)計和開發(fā),因此不是十分穩(wěn)定.系統(tǒng)很快暴露出了它的限制并且需要一個更好的 Phing 系統(tǒng).因此衍生了 Phing2 的雛形.

Phing 當(dāng)前的開發(fā)集中于 Phing2,它涉及許多功能增強(qiáng), bug 修正,并且最值得注意的轉(zhuǎn)變是用 PHP5 的抽象類,接口,和 try/catch/throw 異常處理來重寫了原來 Phing 的基礎(chǔ)代碼.

Phing 使用包含一組項目構(gòu)建描述的 XML 構(gòu)建文件.構(gòu)建文件由一些運(yùn)行實際的命令的目標(biāo)組成(比如復(fù)制文件,刪除目錄,執(zhí)行數(shù)據(jù)庫查詢,等等).因此使用 Phing ,第一步要編寫構(gòu)建文件,然后運(yùn)行 Phing ,在構(gòu)建文件中定義的要執(zhí)行的目標(biāo).

  1. phing -f mybuildfile.xml mytarget

鍵入 phing –h 可以查看命令參數(shù)的描述.

默認(rèn)情況下, Phing 將會查找一個叫 build.xml 的文件.(除非構(gòu)建文件的名稱不是 build.xml ,否則不必為 Phing 指定構(gòu)建文件的名稱) 并且,如果沒有指定任何目標(biāo)那么 Phing 將執(zhí)行在 <project> 標(biāo)簽中設(shè)置的默認(rèn)目標(biāo)( default 屬性所指定的).

安裝 Phing

要使用 Phing 你必須安裝 PHP5.0.0b1 和以上的版本并且加上 –with-libxml2, 和 –with-xsl 選項. 自2.0.0b1版之后,你可以可以下載 PEAR 可安裝包和完全的 Phing 分發(fā)包.如果你希望修改 Phing ,我們建議你下載完整的 Phing 發(fā)行包,這樣你可以創(chuàng)建你自己的 PEAR 包.如果你知識簡單地使用 Phing 作為項目的需要或構(gòu)建其他的包,下載并且安裝 PEAR 包.

安裝 Phing 最簡易的方法是使用 PEAR 安裝工具.

  1. C:/> pear install http://phing.info/pear/phing-current.tgz

( Hick 說明:這里是假設(shè) pear.bat 所在目錄,通常是 php 安裝目錄在系統(tǒng)環(huán)境變量 PATH 中,否則請先在命令行下切換到 pear.bat 所在目錄。)

PEAR 安裝工具將檢查包的依賴性,并把 Phing 的執(zhí)行腳本放到 PHP 的安裝目錄下面( PEAR 命令腳本同時也在這個目錄下面)

下載完整的發(fā)行包及非pear安裝方法見 http://phing.info/docs/guide/2.2.0/chapters/Setup.html

調(diào)用 Phing

命令行
phing [targetname]

XML 和 Phing

構(gòu)建文件有如下基本結(jié)構(gòu):

1.文檔序言(document prolog)
2.根元素 <project>
3.幾個類型元素(<property>,<fileset>,<patternset>)
4.包含一個或幾個內(nèi)建的或用戶自定義的任務(wù)元素(例如:<javac>,<tar>)

編寫一個簡單的構(gòu)建文件

  1. <? xml version = " 1.0 " encoding = " utf-8 " ?>
  2. < project   name = " FooBar " default = " dist " basedir = " . " >
  3. <!-- 創(chuàng)建文件夾 -->
  4. < target   name = " prepare " >
  5. < echo   msg = " Preparing build... " />
  6. < mkdir   dir = " ./pub " />
  7. </ target >
  8. <!-- 復(fù)制文件 -->
  9. < target   name = " build " depends = " prepare " >
  10. < echo > Building... </ echo >
  11. < copy   todir = " ./pub/ " >
  12.   < fileset   dir = " ./src/ " >
  13.   </ fileset >
  14. </ copy >
  15. </ target >
  16. <!-- 打包 -->
  17. < target   name = " dist " depends = " build " if = "" >
  18. < echo   message = " Creating archive... " />
  19. < tar   destfile = " ./phing.tar " compression = " tar " >
  20.   < fileset dir = " ./pub " >
  21.   </ fileset >
  22. </ tar >
  23. </ target >
  24. <!-- 刪除,清理 -->
  25. < target   name = " clean " >
  26. < echo   msg = " Cleaning up... " />
  27. < delete   dir = " ./pub " includeemptydirs = " true " verbose = " true " failonerror = " true " />
  28. </ target >
  29. </ project >

project 元素

文件序言之后緊跟著的第一個元素的是<project>,此元素是一個包含其他元素的容器,并且有以下屬性:

name 項目的名稱
basedir 項目的根目錄,如果未指定將使用當(dāng)前目錄
default 在調(diào)用構(gòu)建文件的時候,如果沒有指定要執(zhí)行的目標(biāo),
將執(zhí)行在此定義的項目默認(rèn)目標(biāo)
description 項目的描述

target 元素

一個目標(biāo)(target)可依賴其他的目標(biāo).你可能有一個在構(gòu)建樹中安裝文件的目標(biāo),例如,創(chuàng)建一個 tar.tgz 分發(fā)包的目標(biāo).

Target元素的屬性:

屬性 含義 要求
name 目標(biāo)的名稱 Yes
depends 此目標(biāo)依賴的逗號分隔列表 No
if 為了使此目標(biāo)得以執(zhí)行而必須設(shè)置的屬性的名稱 No
unless 為了使此目標(biāo)得以執(zhí)行而禁止設(shè)置的屬性的名稱 No

property 元素

屬性是在構(gòu)建文件使用的基本的變量,可以在構(gòu)建文件中通過 PropertyTask 任務(wù)設(shè)置或在 Phing 外部通過命令行傳遞.通過命令行傳遞的屬性總是會覆蓋在構(gòu)建文件中設(shè)置的屬性,也就是說命令行是最后傳遞給 Phing 的,自然會覆蓋先前在構(gòu)建文件中設(shè)置的屬性.

屬性有一個名稱和一個唯一的值.屬性可以作為任務(wù)屬性的值.這是通過在”${”和”}”包含屬性名稱來設(shè)置的.例如:

  1. < property name = " sourcedir " value = " /src/data/ " />
  2. < echo   msg = " ${sourcedir} " />

這里在運(yùn)行時${sourcedir}將被展開為/src/java

或者在命名行中:

phing –Dsourcedir=”/backup/data/” –f mybuild.xml

內(nèi)建屬性

Phing給你提供了訪問系統(tǒng)屬性的能力,好像它已經(jīng)通過 定義過的一樣.例如,${php.version}展開為php的版本.

http://phing.info/docs/guide/2.2.0/chapters/appendixes/AppendixA- 有完整的內(nèi)建屬性的列表
一個復(fù)雜的例子

  1. <? xml version = " 1.0 " ?>
  2. < project   name = " testsite " basedir = " . " default = " main " >
  3. < property   file = " ./mybuild.properties " />
  4. < property   name = " builddir " value = " ${projectdir}/pub " override = " true " />
  5. < property   name = " srcdir " value = " ${projectdir}/src " override = " true " />
  6. <!-- Fileset for all files -->
  7. < fileset   dir = " ${srcdir} " id = " allfiles " >
  8.   < include   name = " * " />
  9.   < exclude   name = " *.txt " />
  10. </ fileset >
  11. <!-- Main Target -->
  12. < target   name = " main " description = " main target " >
  13.   < copy   todir = " ${builddir} " >
  14.     < fileset   refid = " allfiles " />
  15.   </ copy >
  16. </ target >
  17. <!-- Rebuild -->
  18. < target   name = " rebuild " description = " rebuilds this package " >
  19.   < delete   file = " ${builddir}/*.* " />
  20.   < phingcall   target = " main " />
  21. </ target >
  22. </ project >

注意:

第一個propery元素僅包含file屬性,這里file屬性的值是一個相對的或絕對的指向?qū)傩晕募穆窂剑▽傩晕募?后綴名為 .properties,其中包含的鍵值對(key/value)的集合。

構(gòu)建文件中的<fileset>標(biāo)簽.它定義一個文件集合,例如一組多個文件組成的集合.你還可以用<fileset>元 素的子元素<include>和<exclude>包含和排除<fileset>文件模式指定的文件集合

另外<fileset>標(biāo)簽有id屬性,通過id屬性可以在其他地方引用.就像直接包含一樣,通過引用實現(xiàn)了代碼的復(fù)用
在第二個目標(biāo)中使用了<phingcall>標(biāo)簽來調(diào)用了 PhingTask 任務(wù)

屬性文件格式

屬性文件定義屬性.屬性以鍵/值對的形式保存,并且只包含純文本,屬性文件的后綴名稱一般是.properties,構(gòu)建文件的默認(rèn)屬性文件是 build.properties

  1. # Property files contain key/value pairs
  2. projectdir=/data1/
  3. projectname = myproject
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 九九网| 国产美女视频 | 日本不卡一区二区三区在线观看 | 在线视频 亚洲 | 成人福利在线观看 | 中文字幕一区2区 | 精品自拍视频在线观看 | 欧美区国产区 | 性生生活大片免费看视频 | 欧美日韩国产精品 | 香蕉视频色版在线观看 | 毛片播放器 | 久久亚洲国产 | 久久久综合 | 欧美在线色 | av网站在线免费观看 | 国产精品电影一区 | 国产精品久久久久久久久久久久久 | 国产精品久久久久久久久久久久冷 | 极品视频在线 | 精品久久久久久亚洲综合网 | 久久综合久 | 成人影院久久 | 久久国产综合 | 男女av| 91精品国产91久久综合桃花 | 成人免费视频网址 | 色综合久久网 | 国产suv精品一区二区四 | 欧美激情xxxxx| 自拍在线观看 | 日韩欧美国产一区二区三区 | 国产一区二区精品在线 | 欧美九九视频 | 中文字幕av网站 | 久久国产日韩 | 国产一区二区不卡 | 国产精品日韩在线观看 | 黄网在线看 | 中文字幕在线不卡视频 | 欧美第一页 |