Phar簡介:
Phar 歸檔的概念來自 Java™ 技術的 JAR 歸檔,它容許使用單個文件打包應用程序,這個文件中包含運行應用程序所需的全部東西。該文件不一樣於單個可執行文件,後者一般由編程語言生成,好比 C,由於該文件其實是一個歸檔文件而非編譯過的應用程序。所以 JAR 文件實際上包含組成應用程序的文件,可是考慮到安全性,不對這些文件進行仔細區分。Phar 擴展正是基於相似的理念,可是在設計時主要針對 PHP 的 Web 環境。一樣,與 JAR 歸檔不一樣的是,Phar 歸檔可由 PHP 自己處理,所以不須要使用額外的工具來建立或使用。php
Phar 擴展對 PHP 來講並非一個新鮮的概念。它最初使用 PHP 編寫並被命名爲 PHP_Archive,而後在 2005 年被添加到 PEAR 庫。然而在實際中,解決這一問題的純 PHP 解決方案很是緩慢,所以 2007 年從新編寫爲純 C 語言擴展,同時添加了使用 SPL 的ArrayAccess 對象遍歷 Phar 歸檔的支持。自那時起,人們作了大量工做來改善 Phar 歸檔的性能。編程
建立 Phar
建立 Phar 文件須要執行若干步驟。全部步驟須要用到某種形式的 PHP 命令完成建立,由於不存在用於建立歸檔的獨立工具。安全
一、
在使用phar以前你須要修改php.ini 中的 phar.readonly = Off或則0 , 如圖1,不然會報以下錯誤:
Fatal error: Uncaught exception 'UnexpectedValueException' with message 'Cannot write to archive - write operations restricted by INI setting' in D:\www\test\edu_phar\build.php:5 Stack trace: #0 D:\www\test\edu_phar\build.php(5): Phar->buildFromDirectory('D:\www\test\edu...') #1 {main} thrown in D:\www\test\edu_phar\build.php on line 5編程語言
圖1
注:在 PHP 的 Phar 歸檔內打開和引用文件時不須要使用到該設置。工具
二、
看一下咱們打包的程序,我簡單的寫了一個demo叫blog,下面是程序清單 如圖2,一共包含了4個文件和兩個文件夾。性能
圖2
看下入口文件index.php 如圖3:學習
圖3
咱們運行一下看看:如圖4ui
圖4命令行
輸出可經典的Hello World!設計
咱們加上參數在運行一下看看:如圖5
圖5
demo能正常運行,沒有問題
三、
準備打包程序build.php 如圖6
圖6
build.php文件代碼 如圖7
圖7
四、
開始打包,經過命令行模式進入build.php 文件所在目錄,執行php build.php ,若是沒有報錯說明打包完成,如圖8 。你會發現已經生成了blog.phar文件 如圖9
圖8
圖9
五、
打包完成之後咱們來使用這個打包文件。我新建了一個目錄testphar,而且把剛打包的blog.phar文件拷貝過來了。
我在新建一個index.php,咱們在index.php裏面使用blog.phar 如圖10
圖10
咱們在運行一下index.php 如圖11
圖11
整個簡單的phar使用過程算是完成了,是否是很簡單,其實最近我也在學習。若是上面有什麼誤導之處,還請各位大牛略指點一二。