zoukankan      html  css  js  c++  java
  • php的phar是什么?

    phar

    要求5.2以上

    前言

    最近在看composer,是下载了一个composer.phar,然后放到/usr/local/bin目录下,就可以全局使用composer了,然而并不懂phar是什么,还以为是个PHP的扩展,要用phpize编译的,看了这篇文章后才懂韩天峰-php中phar包的使用

    创建

    php5.3之后支持了类似Java的jar包,名为phar。用来将多个PHP文件打包为一个文件.可以和tar zip相互转化

    官网介绍:

    In addition to providing this service, the phar extension also provides a file-format abstraction method for creating and manipulating tar and zip files through the PharData class, much as PDO provides a unified interface for accessing different databases.

    就是类似pdo的接口,也可以转化成zip tar包

    首先要改php.ini里的readonly关闭,默认是不能写phar包的

    $phar = new Phar('swoole.phar');//参数是压缩包的名称
    //指定压缩的目录,第2个参数通过正则指定压缩文件的扩展名
    $phar->buildFromDirectory(__DIR__.'/../','/.php$/');
    //使用gzip来压缩此文件
    $phar->compressFiles(Phar::GZ);
    
    $phar->stopBuffering();
    //用来设置启动加载的文件。默认会自动加载并执行lib_config.php文件
    $phar->setStub($phar->createDefaultStub('lib_config.php'));
    

    使用

    include 'swoole.phar';
    include 'swoole.phar/code/page.php';
    

    转化成zip

    $phar = new Phar('myphar.phar');
    $pgz = $phar->convertToExecutable(Phar::TAR, Phar::GZ); // makes myphar.phar.tar.gz
    

    疑问:

    回到最初的问题,既然是转成了一个文件,那放在bin目录下,为什么就可以全局使用了呢?

  • 相关阅读:
    Codeforces Round #313 (Div. 1) A.Gerald's Hexagon
    COJN 0585 800604鸡蛋的硬度
    COJN 0584 800603吃糖果
    COJN 0583 800602分苹果
    COJN 0575 800601滑雪
    昨天的补记
    重构的代码
    写了一个复杂的sql语句
    一个想法
    安装了C
  • 原文地址:https://www.cnblogs.com/efan/p/10250984.html
Copyright © 2011-2022 走看看