打包多個php檔案變成phar執行檔

PHAR簡介

PHP Archive的英文字母縮寫

PHP5.3之後內建的功能

PHAR之於PHP就像是JAR跟Java的關係

將多個PHP程式檔案打包成單一檔案

使用PHAR後,只需要一個程式就能部署或執行多個複雜的PHP程式

PHAR可以任意讀取、新建、刪除PHAR裡頭的PHP程式

能夠在tar,zip及PHAR格式間互相轉換

 

 

PHAR的使用

1.檔案結構

my/index.php

my/execute.php

my.php

stub.php

 

2.檔案功能

my目錄下的檔案是要打包的php檔案,此次實作要將所有my目錄下的php檔案打包成一個my.phar檔案。

my.php是製作phar的程式檔。

stub.php是phar執行phar時的啟動檔,執行phar時會先執行這個檔案內的程式碼。

 

3.此次實作PHAR的目的

將my目錄下的PHP檔案打成成一個my.phar檔案,可以在部署在任何PHP程式能夠執行的地方。

 

4.my.php的功能

產生PHAR物件,載入PHAR的啟動檔案(stub.php),再將my目錄下的PHP程式打包成my.phar檔案。

my.php的檔案內容

<?php
$p=new Phar('my.phar');
$p->setStub(file_get_contents('stub.php'));
$p->buildFromDirectory('my/');

 

5.stub.php的功能

PHAR檔案如果有stub,在使用時就用一般的PHP檔案方式操作,如果沒有stub,就必須使用特殊的方法操作。

範例:

有stub時,include檔案的方法

include('my.phar');

沒有stub時,include檔案的方法

include(''phar:///my.phar");

 

stub.php的檔案內容

<?php
Phar::mapPhar();
include 'phar://my.phar/index.php';
__HALT_COMPILER();

 

如果要讓my.phar能夠直接在php cli的命令列下執行(直接輸入my.phar就能執行,而非輸入php my.phar),必須在<?php前再加上下面一行指令

#!/usr/bin/php

 

6.製作my.phar檔案

執行以下指令就可以作出my.phar檔案

php my.php

 

參考資料

http://www.ibm.com/developerworks/opensource/library/os-php-5.3new4/index.html

http://css.dzone.com/articles/phar-php-libraries-single-file

http://www.slideboom.com/presentations/26182/PHP-5.3-Part-3---Introducing-PHAR

分類:PHP