zoukankan      html  css  js  c++  java
  • 使用Phar来打包发布PHP程序

    From: http://koda.iteye.com/blog/2087021

    简单来说,Phar就是把Java界的jar概念移植到了PHP界。

    Phar可以将一组PHP文件进行打包,还可以创建默认执行的stub(或者叫做 bootstrap loader),Phar可以选择是否进行压缩,可选gzip和bzip2格式。

    下面举例说明如何创建和使用Phar:

    假设我们的项目名称是user,包含三个文件:

    user/user.class.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?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. ";
        }
     
    }

    user/user.func.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?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();
    }

    user/test.php

    1
    2
    3
    4
    5
    6
    7
    <?php
    require_once "user.class.php";
     
    $u=new user();
    $u->set_name("laomeng");
    $u->set_email("laomeng@163.com");
    $u->introduce();

    然后我们使用如下PHP程序创建Phar文件:

    make_phar.php

    1
    2
    3
    4
    5
    <?php
    $phar new Phar('user.phar', 0, 'user.phar');
    $phar->buildFromDirectory(dirname(__FILE__) . '/user');
    $phar->setStub($phar->createDefaultStub('test.php''test.php'));
    $phar->compressFiles(Phar::GZ);

    执行 php make_phar.php后,可以在当前目录发现一个叫做user.phar的文件。

    我们可以直接执行user.phar文件:

    php user.phar,这个相当于执行user/test.php

    我们还可以引用此文件:

    test_phar.php

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    require_once "user.phar";
    require_once "phar://user.phar/user.class.php";
    $u=new user();
    $u->set_name("mengguang");
    $u->set_email("mengguang@gmail.com");
    $u->introduce();
     
    require_once "phar://user.phar/user.func.php";
     
    $u=make_user("xiaomeng","xiaomeng@163.com");
    dump_user($u);

    参考资料:

    https://php.net/manual/en/book.phar.php

     
  • 相关阅读:
    洛谷 P2008 大朋友的数字
    [USACO10FEB]慢下来Slowing down
    HAOI2007 理想的正方形 单调队列
    滑动窗口
    双栈排序
    概率无向图模型与条件随机场的异同
    P-R曲线出现凹陷的原因
    MaskLab-实例分割(使用语义分割和方向特征精细化目标检测)
    模拟递归生成器
    递归生成器
  • 原文地址:https://www.cnblogs.com/joeblackzqq/p/5336259.html
Copyright © 2011-2022 走看看