pharを使ってみる

More than 3 years have passed since last update.

pharを使ってみる / pharアーカイブを作成 / pharでWebアプリを作ってみた

pharの使用法の記事は、わざとわかりにくく書いてるんじゃないかって疑いたくなるほど何言ってるのかわかりません。

http://php.net/manual/ja/phar.using.intro.php

あとpharでググってもマニュアルのコピペサイトと「PHP5.3ではpharという機能が使えるぜ!」みたいな記事ばっかりで、実際に使ってみたという話が全然出てきません。

どういうことなんですかね。

仕方ないのでここで実際に使ってみます。

pharとは、要するに単に複数のファイルをひとつにまとめられるというだけのことみたいです。

概念としては、zipみたいに複数のファイルをひとつに固めておいて、使うときに特定のファイルだけ取り出すというイメージでしょうか。

というか実際にpharとzipの変換とかもできたりします。

とりあえず使ってみましょう。

こちらに簡単なpharファイルを用意しました。

中には5つのファイルがありますが、4つはこんな中身のないクラスです。

<?php

public static function getClassName(){
function getClassName(){
return __CLASS__;
}
}

もうひとつは画像ファイルです。

ではこれを読み込んでみます。

<?php

require_once('phar://TestClasses.phar/TestClass1.php');
require_once('phar://TestClasses.phar/TestClass2.php');
print(TestClass1::getClassName());//"TestClass1"
print(TestClass2::getClassName());//"TestClass2"

非常に簡単です。

phar://はpharストリームラッパーで、これからpharファイルを指定することを示しています。

次のTestClasses.pharがpharファイル名、最後のTestClass1.phpがpharアーカイブ中の具体的にインクルードしたいファイル名となります。

このように、pharアーカイブは一見ひとつのファイルですが実質的に複数のファイルとして取り扱うことができ、ファイルをまとめて配布したいときなどに便利です。

ちなみにメモ帳に突っ込めばわかりますが基本的に単なるテキストなので、プログラムの隠蔽には使えません。

ところでpharってなんて読むんですかね。ぴゃー?

※2011/07/22に自ブログで書いた内容です。

当時は実際ほとんど使ってるところがなかったのですが、最近はcomposer.pharをはじめ使われている例もわりとあるようです。