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

    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

  • 相关阅读:
    使用 HtmlInputHidden 控件在本页面保持状态和跨页面传值
    asp.net页面回传与js调用服务端事件、PostBack的原理详解
    关于.net委托的一篇妙文
    C# 基础25问
    存储过程分页
    C#中的格式化字符串
    大批量数据的插入之终极性能提升SqlBulkCopy
    统计某个字符串中指定字符串出现的次数
    powerdesigner 15打开pdm文件弹出安装打印机窗口的解决方法
    Convert.ToInt32(),Int.Parse(),Int.TryParse()的区别
  • 原文地址:https://www.cnblogs.com/focai/p/3918730.html
Copyright © 2011-2022 走看看