box (https://box-project.github.io/box2/) を使ってpharファイルを作ってみます。
クイックスタート
以下のmain.phpを格納するpharファイルを作ります。
main.php
<?php
echo "Hello Phar!\n",
__FILE__,"\n",
Phar::running(),"\n",
Phar::running(false),"\n";
boxのインストール
$ composer global require kherge/box
box.jsonファイルの作成
box.json
{
"main": "main.php",
"stub": true
}
ビルド
$ box build
default.pharというファイルが作成されました。実行結果の違いを見てみましょう。
$ php main.php
Hello Phar!
C:\Users\ishida\src\box-test\main.php
$ php default.phar
Hello Phar!
phar://C:/Users/ishida/src/box-test/default.phar/main.php
phar://C:/Users/ishida/src/box-test/default.phar
C:/Users/ishida/src/box-test/default.phar
Phar::running()
を使って、現在pharで実行されているかを調べることができます。
また、pharファイル内では、__FILE__
や__DIR__
はpharファイル内を指します。pharファイルの外側にアクセスしたい場合は、__FILE__
や__DIR__
の代わりにPhar::running(false)
やdirname(Phar::running(false))
を使います。
box.json
の他のさまざまなオプションについては、box help build
を見ましょう。気が向いたら追記します。