LoginSignup
6
7

More than 5 years have passed since last update.

Silex の Phar アーカイブを簡単に作成する方法

Last updated at Posted at 2014-12-20

Pharアーカイブとは

PharアーカイブとはJAVAでいうjarです。
参照:Phar アーカイブの使用法: 導入

Pharアーカイブであれば、1ファイルで管理できるというメリットがあります。もちろんパフォーマンス面などのデメリットもあります。

たとえば、PHPUnitをインストールする方法としても、composer でがんばらなくても PHPUnitのPharアーカイブでインストールする方法があります。1ファイルだけあれば良いのでインストールも1ファイルのダウンロードだけで手っ取り早いですし、管理も簡単です。

自分のプロジェクトである Dbup でも dbup.phar でライブラリを提供しています。

Phar を作るのは辛いので Box を利用する

便利な Phar なんですが、自前で Phar を作ろうとするとビルドのためのスクリプトなど色々準備が必要で大変です。

コマンド1つで出来たらなぁと思っていたところ、Box というライブラリがあることを発見。簡単にいうと、Pharアーカイブのビルドを json ファイルに定義書くだけでよしなにビルドしてくれます。

実績でいうと、PHP Cording Standards Fixer の Phar ファイルはこの Box でビルドされています。

Silex の Phar ファイルを作成するための手順

Silex はいわゆるマイクロフレームワークな書き方ができる Webアプリケーションフレームワークです。

では、さっそく Box を使って silex.phar ファイルを作ってみましょう

ちなみに、簡単に作成するためにsilex-phar を用意したのでとりあえず silex.phar を作りたい人はこちらのリポジトリからどうぞ。

Silex をインストールする

Phar を作るために Silexのコード一式を composer で取得します

install-silex.sh
$ php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"
$ php composer.phar require silex/silex "~1.2"

これで vendor 以下にコードがインストールされます

box.phar をインストール

install-box.sh
$ curl -LSs https://box-project.github.io/box2/installer.php | php

これで box.phar が作成されます。

box.json を用意する

だいたい何してるかは見ればわかると思います。

box.json
{
    "finder": [
        {
            "name": ["*.php"],
            "exclude": ["Tests", "tests"],
            "in": ["vendor"]
        }
    ],
    "output": "silex.phar",
    "stub": false
}

silex.phar を作成する

build-silex.sh
$ php box.phar build
Building...

終われば無事 silex.phar ができているはずです。

silex.phar を使ったアプリケーションコードサンプル

あとは作成した silex.pharautoload.php を利用すればOKです。
本家にあるサンプルコードだと、requireすべきファイルがpharの中になるので、パスが変わります。こんな感じ。

index.php
<?php

require_once 'phar://silex.phar/vendor/autoload.php';

$app = new Silex\Application(); 

$app->get('/hello/{name}', function($name) use($app) { 
    return 'Hello '.$app->escape($name); 
}); 

$app->run();

動作確認するためだけなら、組込みサーバーでさくっと動かせば

run.sh
$ php -S localhost:8888 -t ./

ブラウザから http://localhost:8888/hello/brtriver みたいな感じで確認できるはず。

まとめ

たったこれだけの手順で silex の Pharアーカイブ ができました。
composerで頑張ってインストールしなければならないものは、それでいいですし、もっと楽できるところは Phar を使って楽できるといいんじゃないでしょうか

おまけ

Slimのpharを作りたい場合は、wikiにあるサンプル でできるみたい

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7