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

     
  • 相关阅读:
    博客园
    未释放的已删除文件
    ssh连接缓慢
    剑指 Offer 38. 字符串的排列
    剑指 Offer 37. 序列化二叉树
    剑指 Offer 50. 第一个只出现一次的字符
    剑指 Offer 36. 二叉搜索树与双向链表
    剑指 Offer 35. 复杂链表的复制
    剑指 Offer 34. 二叉树中和为某一值的路径
    剑指 Offer 33. 二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/joeblackzqq/p/5336259.html
Copyright © 2011-2022 走看看