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

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

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

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

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

    user/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.
    ";
        }
     
    }

    user/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();
    }

    user/test.php

    <?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

    <?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

    <?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

  • 相关阅读:
    Salesforce Javascript(四) 展开语法 ...
    salesforce零基础学习(一百零二)Limitation篇之 CPU Limit
    salesforce lightning零基础学习(十七) 实现上传 Excel解析其内容
    php orm的C扩展 ycdatabase
    php ice框架
    不错的PHP扩展
    php的各种序列化对比
    ubuntu 使用tree打印树形结构
    文件写入速度对比
    服务器cli模式下的定时器
  • 原文地址:https://www.cnblogs.com/wangzhaobo/p/8295080.html
Copyright © 2011-2022 走看看