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

「php化整为零系列」十、Phar_第1张图片

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

该系列我只写我的理解,非官方解释,如不够专业请见谅

PHAR: 即 PHP Archive,将这个应用程序打包成单个文件,以利于分发和安装的机制,似乎是从JAVA的JAR借鉴来的东西

开启phar功能

配置php.ini

[Phar]
; http://php.net/phar.readonly
phar.readonly = Off//默认是On

基本语法

  1. 打包
new Phar(包名)
$phar->buildFromDirectory(打包目录, 正则筛选);
$phar->compressFiles( Phar::GZ |PHAR::BZ2);//压缩方式
$phar->setStub( $phar->createDefaultStub(入口文件) );
  1. 引用
require_once 'phar:://包名/文件';

Example

  • 目录结构
「php化整为零系列」十、Phar_第2张图片
  • 代码
//user.class.php
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
set_name($name);
    $u->set_email($email);
    return $u;
}
 
function dump_user($u) {
    $u->introduce();
}
//test.php
set_name("laomeng");
$u->set_email("[email protected]");
$u->introduce();

通过make_phar.php打包成phar
命令行执行php make_phar.php在目录下就会生成user.phar

//make_phar.php
buildFromDirectory(dirname(__FILE__) . '/user', '/\.php$/');
$phar->setStub($phar->createDefaultStub('test.php'));//设置启动加载的文件
$phar->compressFiles(Phar::GZ);#表示使用gzip来压缩此文件。也支持bz2压缩。参数修改为 PHAR::BZ2即可

测试代码

//test_phar.php
set_name("mengguang");
$u->set_email("[email protected]");
$u->introduce();#My name is mengguang and my email address is [email protected].
 
require_once "phar://user.phar/user.func.php";
 
$u=make_user("xiaomeng","[email protected]");
dump_user($u);#My name is xiaomeng and my email address is [email protected].

命令行执行php test_phar.php
输出

My name is laomeng and my email address is [email protected].
My name is mengguang and my email address is [email protected].
My name is xiaomeng and my email address is [email protected].

如此就介绍完了phar的简单用法,个人感觉相对要比打jar包要复杂,不过引用要比jar包简单的多,可能功能上有些缺失,不过掌握以上的功能已经够用了

你可能感兴趣的:(「php化整为零系列」十、Phar)