鑰匙要點
PHING是一種基於Apache ANT的PHP項目構建工具,該工具有助於自動化任務,例如運行單元測試,應用數據庫更改和部署應用程序代碼。這有助於防止手動過程中可能發生的錯誤,尤其是在連續集成工作流程中。
- > phing使用XML文件來定義任務。這些任務可以分為目標,可以單獨調用或取決於其他目標。任務可以從簡單的操作等簡單的操作等簡單的操作到更複雜的操作,例如FTP部署。 phing還允許創建自定義任務。
>
- phing不僅限於特定於PHP的操作,還可以處理特定於框架的操作。這使其成為任何PHP項目的多功能工具。它還有助於自動化部署過程,處理錯誤並生成文檔。 >
PHING是基於Apache Ant的PHP項目構建工具。構建系統可幫助您使用單個命令執行一組操作。如果您想知道為什麼PHP需要構建工具,請考慮在本地計算機上編寫代碼和單元測試的工作流程,如果測試通過您將代碼上傳到登台/生產服務器,並對生產數據庫進行任何更改。沒有構建文件,您需要手動瀏覽每個步驟。如果您正在進行連續集成,那麼您將一遍又一遍地採取相同的步驟。意外地省略了此過程並最終遇到生產中的嚴重問題是太容易了。 PHING通過自動執行任務,例如運行單元測試,應用數據庫更改,部署應用程序代碼等來幫助克服此類問題。在本文中,我將向您展示使用PHING的一些基礎知識。
如果還沒有它,則可以使用梨安裝phing:
shameer@yukon:~$ sudo pear channel-discover pear.phing.info
shameer@yukon:~$ sudo pear install phing/phing
如果您希望使用Phpunit或phpdocumentor等任務,則還需要安裝因軟件包。
> phing hello world
為了向您展示創建用於PHING的構建文件的容易,讓我們從“ Hello World”構建文件開始。首先創建您的項目目錄,然後在內部創建一個名為build.xml的文件,其中包含以下內容:
<span><?xml version="1.0" encoding="UTF-8"?>
</span><span><span><span><project</span> name<span>="HelloWorld"</span> default<span>="welcome"</span> basedir<span>="."</span> description<span>="a demo project"</span>></span>
</span> <span><span><span><property</span> name<span>="message"</span> value<span>="Hello World!"</span>/></span>
</span> <span><span><span><target</span> name<span>="welcome"</span>></span>
</span> <span><span><span><echo</span> msg<span>="${message}"</span>/></span>
</span> <span><span><span></target</span>></span>
</span><span><span><span></project</span>></span></span>
從命令行導航到目錄並運行phing。
shameer@yukon:~/HelloWorld$ phing
Buildfile: /home/shameer/HelloWorld/build.xml
HelloWorld > welcome:
[echo] Hello World!
BUILD FINISHED
Total time: 0.2275 seconds
元素是構建文件的根元素。屬性默認值是必需的,並指定默認目標如果在命令行上不提供一個默認目標。除此之外,您還可以指定項目名稱,項目基礎目錄和描述,以幫助保持井井有條。
元素代表可以執行的一組任務組。例如,可以定義不同的目標以執行備份或更新數據庫。目標也可以取決於在執行之前必須執行的另一個目標。
元素是一個任務,可以執行的單個操作。 PHING中有許多核心任務,從創建目錄等簡單任務到更複雜的任務,例如執行XSLT轉換。但是,您不僅限於Phing提供的任務;您還可以創建自定義任務。
元素定義了命名的值,可在整個構建文件中以後使用。要引用屬性的值,請指定其名稱“ $ {”和“}“。請記住,屬性名稱對案例敏感。
您命名構建文件build.xml並不是強制性的,但是Phing默認情況下會尋找此名稱。如果使用其他名稱,則需要將構建文件指定為phing命令的參數,例如:
shameer@yukon:~$ sudo pear channel-discover pear.phing.info
shameer@yukon:~$ sudo pear install phing/phing
您還可以通過在命令行中提供一個或多個目標名稱來調用目標:
<span><?xml version="1.0" encoding="UTF-8"?>
</span><span><span><span><project</span> name<span>="HelloWorld"</span> default<span>="welcome"</span> basedir<span>="."</span> description<span>="a demo project"</span>></span>
</span> <span><span><span><property</span> name<span>="message"</span> value<span>="Hello World!"</span>/></span>
</span> <span><span><span><target</span> name<span>="welcome"</span>></span>
</span> <span><span><span><echo</span> msg<span>="${message}"</span>/></span>
</span> <span><span><span></target</span>></span>
</span><span><span><span></project</span>></span></span>
多個目標
讓我們修改構建腳本並添加其他目標。為了舉例來說,我假設該項目已建立以下目錄結構:
更新build.xml
現在看起來像這樣:
shameer@yukon:~/HelloWorld$ phing
Buildfile: /home/shameer/HelloWorld/build.xml
HelloWorld > welcome:
[echo] Hello World!
BUILD FINISHED
Total time: 0.2275 seconds
已經添加了兩個目標,測試和構建,默認目標已更改為構建。現在,當您從項目目錄運行PHING時,它將調用構建目標,並且由於此目標取決於測試目標,因此PHING將首先運行測試目標。 任務調用phpunit。由於構建過程不應繼續,如果任何單元測試失敗,則其獲取將包含在任意數量的嵌套元素中的文件。
成功運行單元測試後,構建目標使用中指定的文件使用將文件複製到目標目錄。請注意,不用在此處提供文件名,而是使用過時。這引用了ID srcfiles較早聲明的。當您具有復雜的正則表達式或需要在多個地方引用相同的文件時,定義文件集並將其引用很有幫助。
任務使用帶有給定憑據的FTP連接到遠程服務器,並將文件集指定的文件傳輸。
摘要
在本文中,我向您介紹了PHP構建工具phing。 PHING比我在這裡討論的要多得多,例如,您可以使用它來幫助數據庫遷移。我建議閱讀Phing的出色文檔,以查看此功能強大的工具可以做什麼。
圖像通過dino o / shutterstock >
常見問題(常見問題解答)有關使用phing
> phing build文件的基本結構是什麼? > phing構建文件是XML文件,它定義要執行的任務。它以>標籤開頭,其中包含諸如名稱,默認值和基於的屬性。 標籤定義了一系列可以一起執行的任務。每個任務都由特定的XML標籤表示,例如>,等。任務是按照它們出現在目標的順序執行的。
>>如何使用PHING進行連續集成?
>可以將PHING用於連續集成以自動化構建和部署過程。您可以定義代碼覆蓋,單元測試,生成文檔,包裝代碼並將其部署到服務器的任務。每當代碼存儲庫中發生更改時,這些任務就可以自動觸發。 如何使用自定義任務擴展PHING? phing允許您通過擴展任務類來創建自定義任務。您需要實現定義任務行為的主()方法。創建自定義任務類後,您可以在構建文件中使用
標籤來註冊任務。
> PHING和其他構建工具(例如ANT或MAVEN)之間有什麼區別? Phing使用XML進行構建文件,例如ANT,但它具有用於PHP特定操作(例如運行Phpunit測試或生成PHPDocumentor文檔)的內置任務。另一方面,Maven採用了一種限制性的方法,並且具有更複雜的生命週期。 >
>我如何處理phing中的錯誤? phing提供了幾種處理錯誤的方法。如果滿足特定條件,則可以使用
任務來停止構建過程。您還可以使用該任務來捕獲異常並適當處理它們。此外,您可以配置記錄級別以控制發生錯誤時顯示的信息的量。
>我可以與Laravel或其他PHP框架一起使用PHING嗎?您可以定義任務來處理特定於框架的操作,例如運行遷移或播種數據庫。 >
>如何並行運行PHING任務? phing不支持在包裝盒中並行運行任務。但是,您可以通過使用
任務在後台運行單獨的PHING進程來實現這一目標。
>我可以使用PHING部署我的應用程序嗎?
是的,可以使用PHING來自動化部署過程。您可以定義任務以包裝應用程序,將其上傳到服務器並執行任何必要的設置任務。 >>我如何在phing中使用變量? >您可以使用
>標記定義變量並在構建文件中以後使用它們。可以從屬性文件,命令行或環境設置變量。
>我可以使用phing為我的項目生成文檔嗎? 是的,phing具有內置的任務,用於使用phpdocumentor或apigen等工俱生成文檔。您可以通過指定源和目標目錄,輸出格式以及其他選項來配置文檔生成過程。
>以上是使用PHING,PHP構建工具的詳細內容。更多資訊請關注PHP中文網其他相關文章!