「php化整為零系列」十、Phar


源碼地址:https://github.com/wilfordw/phpTutorial

該系列我只寫我的理解,非官方解釋,如不夠?qū)I(yè)請見諒

PHAR: 即 PHP Archive,將這個應(yīng)用程序打包成單個文件,以利于分發(fā)和安裝的機(jī)制,似乎是從JAVA的JAR借鑒來的東西

開啟phar功能

配置php.ini

[Phar]
; http://php.net/phar.readonly
phar.readonly = Off//默認(rèn)是On

基本語法

  1. 打包
new Phar(包名)
$phar->buildFromDirectory(打包目錄, 正則篩選);
$phar->compressFiles( Phar::GZ |PHAR::BZ2);//壓縮方式
$phar->setStub( $phar->createDefaultStub(入口文件) );
  1. 引用
require_once 'phar:://包名/文件';

Example

  • 目錄結(jié)構(gòu)
  • 代碼
//user.class.php
<?php
 
class user {
    private $name="anonymous";
    private $email="anonymous@nonexists.com";
 
    public function set_email($email) {
        $this->email=$email;
    }
    public function set_name($name) {
        $this->name=$name;
    }
    public function introduce() {
        echo "My name is $this->name and my email address is $this->email.\n";
    }
 
}
//user.func.php
<?php
 
require_once "user.class.php";
 
function make_user($name,$email) {
    $u=new user();
    $u->set_name($name);
    $u->set_email($email);
    return $u;
}
 
function dump_user($u) {
    $u->introduce();
}
//test.php
<?php
require_once "user.class.php";
 
$u=new user();
$u->set_name("laomeng");
$u->set_email("laomeng@163.com");
$u->introduce();

通過make_phar.php打包成phar
命令行執(zhí)行php make_phar.php在目錄下就會生成user.phar

//make_phar.php
<?php
$phar = new Phar('user.phar');#定義壓縮包名
//指定壓縮的目錄,第二個參數(shù)可通過正則來制定壓縮文件的擴(kuò)展名
$phar->buildFromDirectory(dirname(__FILE__) . '/user', '/\.php$/');
$phar->setStub($phar->createDefaultStub('test.php'));//設(shè)置啟動加載的文件
$phar->compressFiles(Phar::GZ);#表示使用gzip來壓縮此文件。也支持bz2壓縮。參數(shù)修改為 PHAR::BZ2即可

測試代碼

//test_phar.php
<?php
require_once "user.phar";//加載壓縮包
#My name is laomeng and my email address is laomeng@163.com.來自入口test.php
require_once "phar://user.phar/user.class.php";//加載壓縮包內(nèi)php文件

$u=new user();
$u->set_name("mengguang");
$u->set_email("mengguang@gmail.com");
$u->introduce();#My name is mengguang and my email address is mengguang@gmail.com.
 
require_once "phar://user.phar/user.func.php";
 
$u=make_user("xiaomeng","xiaomeng@163.com");
dump_user($u);#My name is xiaomeng and my email address is xiaomeng@163.com.

命令行執(zhí)行php test_phar.php
輸出

My name is laomeng and my email address is laomeng@163.com.
My name is mengguang and my email address is mengguang@gmail.com.
My name is xiaomeng and my email address is xiaomeng@163.com.

如此就介紹完了phar的簡單用法,個人感覺相對要比打jar包要復(fù)雜,不過引用要比jar包簡單的多,可能功能上有些缺失,不過掌握以上的功能已經(jīng)夠用了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Welcome 目前網(wǎng)絡(luò)上充斥著大量的陳舊信息,讓PHP新手誤入歧途,傳播著錯誤的實踐和糟糕的代碼,這必須得到糾正...
    layjoy閱讀 21,851評論 7 118
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,157評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,276評論 6 342
  • 【繪制心得】 模擬測試的成績不是很好,感覺今年的大師夢要碎了。于是我便思考,是否要頂住生活、家人的壓力,堅...
    焦典I世界記憶大師閱讀 260評論 3 1

友情鏈接更多精彩內(nèi)容