PHP
homebrew
BOX
Phar

PHP の Phar アーカイバ「BOX」が v3 になって brew でインストール可能に

TL;DR

Homebrewでインストール
$ brew tap humbug/box
$ brew install box
$ box -v
Brewを使わない単体インストール
$ curl -LSs https://keinos.github.io/Phar_Box3_installer/installer.php | php
$ box -v

TS;DR

永らくメンテナンスされていなかった Phar アーカイバ「Box2」ですが、メンテナが「box-project」から「humbug」に移行され、先日(2018/09/10に) RC が取れてめでたく「BOX v3.0.0」になりました

変更内容

基本的にはリファクタリングがメインですが、以下が主な変更です。

BOX 2.7 から 3.0 への具体的な変更の詳細は「UPGRADE.md」をご覧ください。

  • PHP v7 専用になりました。
  • 2倍以上速くなりました。
  • 設定ファイルは必須でなくなりました。
  • Phar にインクルードするファイルを composer.json などのファイルから自動検知するようになりました。
  • php.iniphar.readonlyulimit の変更が不要になりました。
  • PHP-Scoperを同梱できるようになりました。
  • Requirements checkerを同梱できるようになりました。
  • buildコマンドからcompileコマンドに名称が変更になりました

現在は開発した PHP の環境依存を吸収させるために dockerイメージでも出力できるように開発が進められています。

コマンド一覧
$ box list

    ____            
   / __ )____  _  __
  / __  / __ \| |/_/
 / /_/ / /_/ />  <  
/_____/\____/_/|_|  


Box version 3.0.0@abc01b3 2018-09-10 12:36:36

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  build     Builds a new PHAR (deprecated, use "compile" instead)
  compile   Compile an application into a PHAR
  diff      Display the differences between all of the files in two PHARs
  help      Displays help for a command
  info      Displays information about the PHAR extension or file
  list      Lists commands
  process   Apply the registered compactors and replacement values on a file
  validate  Validates the configuration file
  verify    Verifies the PHAR signature
コマンド一覧(筆者翻訳)
Usage:
  command [オプション] [引数]

オプション:
  -h, --help            このヘルプを表示
  -q, --quiet           メッセージを何も表示させない
  -V, --version         BOX バージョンを表示
      --ansi            ANSI 出力を強制
      --no-ansi         ANSI 出力を無効にする
  -n, --no-interaction  ユーザ入力を求めさせない
  -v|vv|vvv, --verbose  表示の詳細レベルをあげる:1 一般情報表示、2 詳細情報表示、3 デバッグ情報表示

利用可能なコマンド:
  build     新い PHAR をビルドする(廃止されました。"compile" を代わりに利用ください)
  compile   アプリケーションを PHAR にコンパイルする
  diff      2つの PHAR 間を比較して差分を表示する
  help      コマンドのヘルプを表示する
  info      PHAR ファイルもしくは拡張(PHAR extension)の情報を表示する
  list      コマンドの一覧を表示する
  process   登録された圧縮アルゴリズム(compactors)を適用、もしくはファイル内の値置換処理を適用する
  validate  設定ファイルの設定内容を検証する
  verify    PHAR 署名を認証確認する
compileのヘルプ
$ # 下記は `box compile -h` でも可
$ box help compile
Description:
  Compile an application into a PHAR

Usage:
  compile [options]

Options:
  -c, --config=CONFIG            The alternative configuration file path.
      --debug                    Dump the files added to the PHAR in a `.box_dump` directory
      --no-parallel              Disable the parallel processing
      --no-restart               Do not restart the PHP process. Box restarts the process by default to disable xdebug and set `phar.readonly=0`
      --dev                      Skips the compression step
      --no-config                Ignore the config file even when one is specified with the --config option
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Help:
  The compile command will compile code in a new PHAR based on a variety of settings.

    This command relies on a configuration file for loading
    PHAR packaging settings. If a configuration file is not
    specified through the --config|-c option, one of
    the following files will be used (in order): box.json,
    box.json.dist

  The configuration file is actually a JSON object saved to a file. For more
  information check the documentation online:

    https://github.com/humbug/box
compileのヘルプ(筆者翻訳)
$ box help compile
機能概要:
  PHP アプリケーションを PHAR にコンパイルします

使い方:
  compile [オプション]

オプション:
  -c, --config=CONFIG            代替設定ファイルのパスを指定する
      --debug                    PHAR に追加されたファイルを `.box_dump` ディレクトリにダンプ出力する
      --no-parallel              並列処理を無効にする
      --no-restart               PHP プロセスを再起動させない。Box はデフォルトで `phar.readonly=0` を設定しプロセスを再起動させて xdebug を無効にします。
      --dev                      圧縮処理をスキップします
      --no-config                `--config` オプションを指定していたとしても設定ファイルを無視する
  -d, --working-dir=WORKING-DIR  指定された場合、作業ディレクトリとして利用する
  -h, --help                     このヘルプメッセージを表示
  -q, --quiet                    メッセージを何も表示させない
  -V, --version                  BOX バージョンを表示
      --ansi                     ANSI 出力を強制
      --no-ansi                  ANSI 出力を無効にする
  -n, --no-interaction           ユーザ入力を求めさせない
  -v|vv|vvv, --verbose           表示の詳細レベルをあげる:1 一般情報表示、2 詳細情報表示、3 デバッグ情報表示

ヘルプ:
  `compile` コマンドは、設定にあわせてコードのコンパイルを行い、新しい PHAR を作成します。

    このコマンドは、PHAR のパッケージング設定を設定ファイルに依存して読
    み込みます。--config|-c オプションで設定ファイルが指定されていない
    場合、以下のファイルを順に検索して利用しようとします。

    box.json, box.json.dist

  設定ファイルは JSON 形式(JSON オブジェクトをファイルに出力したもの)です。詳細に関して
  は、下記オンライン・ドキュメントを参照ください。

    https://github.com/humbug/box