搜尋
首頁後端開發php教程PHP主|使用作曲家腳本構建自動化

態遵循亞歷山大·科格諾(Alexander Cogneau)與作曲家的依賴管理簡介 ,您現在知道作曲家是管理外部項目依賴和版本限制的解析器。但這就是一切嗎?在本文中,我將向您展示如何也可以將作曲家用作基本的構建自動化工具。

鑰匙要點

    除了作為管理外部項目依賴性和版本限制的解析器外,
  • >作曲家還可以用作基本的構建自動化工具。它暴露了pre
  • >和post
  • 在執行過程中,
  • install/update/卸載事件掛鉤可以為一系列自動任務腳本腳本。
>作曲家腳本

任何值得鹽的構建自動化工具都必須提供腳本腳本一系列自動任務的能力 - 從建造,包裝和運行測試套件到分期和生產系統的部署。例如,Phing基於ANT,允許您在XML構建文件中定義此類任務。 作曲家在這方面有所不同,因為它對這些任務是什麼,或者根本沒有執行這些任務。相反,作曲家的作用是在執行過程中揭示其前和後安裝/卸載事件掛鉤,您可以使用“腳本”回調,就像Pyrus提供的能力一樣,可以通過package.xml中定義自定義命令。 - Plugin選項的安裝,升級和卸載命令。 腳本屬性是在您的root軟件包的composer.json的root json對像中定義的 文件。您可以定義任何數量的PHP靜態方法(必須由作曲家的自動加載機制自動加載),命令行可執行文件或兩者的組合。 然後,在作曲家的執行過程中調用了這些腳本定義的任何自定義代碼或軟件包特定命令。注意的是,僅執行了根包的作曲家中定義的腳本。作曲家將不會執行根軟件包依賴關係中指定的任何腳本。 在作曲家執行過程中發射以下事件:

    > pre-install-cmd - 發生在執行安裝命令之前
  • >後安裝-CMD - 發生在執行安裝命令
  • 之後
  • > pre-preddate-cmd - 發生在執行更新命令之前
  • > tost-update-cmd - 發生在執行更新命令之後
  • >之後
  • >預包裝安裝 - 發生在安裝軟件包
  • >之前
  • >後包裝安裝 - 在安裝軟件包
  • 之後發生
  • >預包裝 - 發生在更新軟件包之前發生
  • >後包 - 在更新軟件包後發生
  • >
  • >預包裝 - uninstall - 發生在包裝卸載
  • 之前
  • > package-uninstall - 在包裝卸載
  • 之後發生
這些是相當不言自明的,我認為您會同意美麗在於它的簡單性。但要說明,這是一個示例root軟件包composer.json:
<span>{
</span>    <span>"name": "MyProject",
</span>    <span>"description": "An example to demonstrate the use of Composer scripts",
</span>    <span>"version": "1.0.0",
</span>    <span>"require": {
</span>        <span>"php": ">=5.3",
</span>        <span>"ext-xsl": "*",
</span>        <span>"ext-imap": "*",
</span>        <span>"ext-gd": "*"
</span>      <span>},
</span>
    <span>"autoload": {
</span>        <span>"psr-0": {
</span>            <span>"MyProject": "src/"
</span>        <span>}
</span>    <span>},
</span>
    <span>"scripts": {
</span>        <span>"pre-install-cmd": "MyProject\Installer::preInstall",
</span>        <span>"post-install-cmd": [
</span>            <span>"MyProject\Installer::postInstall"
</span>        <span>],
</span>        <span>"post-package-install": [
</span>            <span>"MyProject\Installer::postPackageInstall",
</span>            <span>"phpunit -c /tests",
</span>            <span>"./bin/install.sh"
</span>        <span>]
</span>    <span>}
</span><span>}</span>
我為預安裝CMD,後安裝後CMD和包裝後安裝事件定義了一些腳本。如您所見,我們可以定義靜態PHP方法和命令行可執行文件的任何組合。在包裝後安裝事件的情況下,它還執行一些單元測試和自定義安裝腳本。 這是我們的示例腳本的樣子:
<span><span><?php </span></span><span><span>namespace MyProject;
</span></span><span><span>use ComposerScriptEvent;
</span></span><span>
</span><span><span>class Installer
</span></span><span><span>{
</span></span><span>    <span>public static function preInstall(Event $event) {
</span></span><span>        <span>// provides access to the current ComposerIOConsoleIO
</span></span><span>        <span>// stream for terminal input/output
</span></span><span>        <span>$io = $event->getIO();
</span></span><span>        <span>if ($io->askConfirmation("Are you sure you want to proceed? ", false)) {
</span></span><span>            <span>// ok, continue on to composer install
</span></span><span>            <span>return true;
</span></span><span>        <span>}
</span></span><span>        <span>// exit composer and terminate installation process
</span></span><span>        <span>exit;
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>public static function postInstall(Event $event) {
</span></span><span>        <span>// provides access to the current Composer instance
</span></span><span>        <span>$composer = $event->getComposer();
</span></span><span>        <span>// run any post install tasks here
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>public static function postPackageInstall(Event $event) {
</span></span><span>        <span>$installedPackage = $event->getComposer()->getPackage();
</span></span><span>        <span>// any tasks to run after the package is installed?
</span></span><span>    <span>}
</span></span><span><span>}</span></span></span>
當這些事件中的每個事件都被解僱時,作曲家的內部事件處理程序將ComposersCriptevent對像作為第一個(也是唯一的)參數傳遞給每個回調。活動 對象將其他作曲家對象的以下獲取器曝光到您的回調:
  • getComposer() - 返回CompoSercosser的當前實例
  • > getName() - 返回要觸發的事件的名稱
  • > getio() - 返回當前輸入/輸出流,該流將ComposerioioioioInterface實現用於讀取/寫入控制台
  • >
您可以針對每個方法簽名的Composer API文檔,以及這些對像中每個對象的其他方法,尤其是Composer實例和IO接口。 儘管這種看似基本的實現可能並不像phing的定義那樣“強大”,但其簡單性掩蓋了它令人難以置信的靈活性。它利用您在PHP中的現有知識投資,並且有了一些創造力和想像力,您可以使用Composer的依賴性解決方案和本機PHP腳本來創建一些相當複雜的構建和刪除任務。您甚至可以將其集成到Jenkins中以進行連續集成。

摘要

在本文中,我介紹了一個基本的示例,說明瞭如何使用作曲家腳本來執行構建自動化。這些任務可以像您需要的那樣簡單或複雜,因為它們利用了您在PHP中的現有知識投資。 希望本文將激發您使用作曲家不僅僅是依賴性管理。有關如何使用Composer腳本的更多信息,請參見GetComposer.org/doc/articles/scripts.md。 通過fotolia 圖像 >常見問題(常見問題解答)有關用作曲家腳本構建自動化

>作曲家在PHP開發中的主要功能是什麼?它使您可以聲明您的項目取決於的庫,並且它將為您管理(安裝/更新)。作曲家與YUM或APT的意義相同。是的,它處理“軟件包”或庫,但每項項目管理它們,將它們安裝在您的項目中的目錄(例如供應商)中。

>

>如何使用Composer腳本自動化任務?

>我可以使用Composer腳本進行測試嗎?您可以在Composer.json文件中定義一個運行測試的腳本。例如,您可以定義一個稱為“測試” phpunit的腳本。然後,您可以使用“ Composer Run-Script Test”命令從命令行運行測試。

>如何使用Composer腳本進行部署?

COMPOSER腳本可用於部署通過在Composer.json文件中定義腳本,該文件執行部署應用程序的必要步驟。這可能包括諸如編譯資產,優化代碼和將文件上傳到服務器之類的任務。定義腳本後,您可以使用'Composer Run-Script'命令從命令行中運行它。

作曲家腳本可以運行自定義PHP代碼嗎?

是的,Composer腳本可以運行自定義PHP代碼。您可以在Composer.json文件中定義一個運行PHP文件的腳本。 PHP文件可以包含您想要的任何代碼。當您使用“ Composer Run-script”命令運行腳本時,將執行PHP代碼。

>

>如何在Composer中管理Composer中的腳本? .json文件。每個腳本被定義為鍵值對,關鍵是腳本的名稱,值是要運行的命令。您可以通過編輯composer.json文件來添加,修改或刪除腳本。

我可以使用Composer腳本來自動化構建過程嗎?

是的,Composer腳本可用於自動化構建過程。通過在Composer.json文件中定義腳本,您可以自動化任務,例如編譯代碼,縮小資產和生成文檔。然後可以使用“ Composer Run-Script”命令從命令行中運行這些腳本。

>

>使用Composer腳本進行自動化有什麼好處?您的開發過程效率更高。通過自動化重複任務,您可以節省時間並減少錯誤的風險。作曲家腳本也使您的構建過程更加一致,因為每次以相同的方式執行相同的任務。

>

我可以將Composer腳本與其他工具結合使用嗎?可以與其他工具一起使用。例如,您可以使用作曲家腳本來運行GULP任務,也可以運行Phpunit測試套件。這使您可以利用其他工具的功能,同時仍能從作曲家腳本提供的自動化中受益。

>我如何了解有關使用作曲家腳本進行自動化的更多信息?

>有很多資源可幫助您了解有關使用Composer腳本進行自動化的更多信息。官方的作曲家文檔是一個不錯的起點。在線提供了許多教程和博客文章,提供了使用作曲家腳本的示例和最佳實踐。

>

以上是PHP主|使用作曲家腳本構建自動化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
unset()和session_destroy()有什麼區別?unset()和session_destroy()有什麼區別?May 04, 2025 am 12:19 AM

Thedifferencebetweenunset()andsession_destroy()isthatunset()clearsspecificsessionvariableswhilekeepingthesessionactive,whereassession_destroy()terminatestheentiresession.1)Useunset()toremovespecificsessionvariableswithoutaffectingthesession'soveralls

在負載平衡的情況下,什麼是粘性會話(會話親和力)?在負載平衡的情況下,什麼是粘性會話(會話親和力)?May 04, 2025 am 12:16 AM

stickysessensureuserRequestSarerOutedTothesMeServerForsessionDataConsisterency.1)sessionIdentificeAssificationAssigeaSsignAssignSignSuserServerServerSustersusiseCookiesorUrlModifications.2)一致的ententRoutingDirectSsssssubsequeSssubsequeSubsequestrequestSameSameserver.3)loadBellankingDisteributesNebutesneNewuserEreNevuseRe.3)

PHP中有哪些不同的會話保存處理程序?PHP中有哪些不同的會話保存處理程序?May 04, 2025 am 12:14 AM

phpoffersvarioussessionsionsavehandlers:1)文件:默認,簡單的ButMayBottLeneckonHigh-trafficsites.2)Memcached:高性能,Idealforsforspeed-Criticalapplications.3)REDIS:redis:similartomemememememcached,withddeddeddedpassistence.4)withddeddedpassistence.4)databases:gelifforcontrati forforcontrati,有用

PHP中的會話是什麼?為什麼使用它們?PHP中的會話是什麼?為什麼使用它們?May 04, 2025 am 12:12 AM

PHP中的session是用於在服務器端保存用戶數據以在多個請求之間保持狀態的機制。具體來說,1)session通過session_start()函數啟動,並通過$_SESSION超級全局數組存儲和讀取數據;2)session數據默認存儲在服務器的臨時文件中,但可通過數據庫或內存存儲優化;3)使用session可以實現用戶登錄狀態跟踪和購物車管理等功能;4)需要注意session的安全傳輸和性能優化,以確保應用的安全性和效率。

說明PHP會話的生命週期。說明PHP會話的生命週期。May 04, 2025 am 12:04 AM

PHPsessionsstartwithsession_start(),whichgeneratesauniqueIDandcreatesaserverfile;theypersistacrossrequestsandcanbemanuallyendedwithsession_destroy().1)Sessionsbeginwhensession_start()iscalled,creatingauniqueIDandserverfile.2)Theycontinueasdataisloade

絕對會話超時有什麼區別?絕對會話超時有什麼區別?May 03, 2025 am 12:21 AM

絕對會話超時從會話創建時開始計時,閒置會話超時則從用戶無操作時開始計時。絕對會話超時適用於需要嚴格控制會話生命週期的場景,如金融應用;閒置會話超時適合希望用戶長時間保持會話活躍的應用,如社交媒體。

如果會話在服務器上不起作用,您將採取什麼步驟?如果會話在服務器上不起作用,您將採取什麼步驟?May 03, 2025 am 12:19 AM

服務器會話失效可以通過以下步驟解決:1.檢查服務器配置,確保會話設置正確。 2.驗證客戶端cookies,確認瀏覽器支持並正確發送。 3.檢查會話存儲服務,如Redis,確保其正常運行。 4.審查應用代碼,確保會話邏輯正確。通過這些步驟,可以有效診斷和修復會話問題,提升用戶體驗。

session_start()函數的意義是什麼?session_start()函數的意義是什麼?May 03, 2025 am 12:18 AM

session_start()iscucialinphpformanagingusersessions.1)ItInitiateSanewsessionifnoneexists,2)resumesanexistingsessions,and3)setsasesessionCookieforContinuityActinuityAccontinuityAcconActInityAcconActInityAcconAccRequests,EnablingApplicationsApplicationsLikeUseAppericationLikeUseAthenticationalticationaltication and PersersonalizedContentent。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器