前回pharアーカイブを読み込みましたが、今回はそのpharアーカイブを作成してみます。
Pharクラスにはなんかすごい数のメソッドが詰まっていて一見よくわからないのですが、実際使うメソッドはほとんどありません。
Phar::getModifiedとかどんなときに使うんだよって話ですよ。
まず必要なのはphp.iniの設定変更。
pharの作成を公開サーバで行う必要は皆無なので、デフォルトでは禁止されています。
phar.readonly = 0
phar.require_hash = 0
を設定することでpharアーカイブの作成が可能になります。
http://php.net/manual/ja/phar.configuration.php#ini.phar.readonly
では作成。
実に簡単ですね。
完成したものが、前回使用したpharファイルになります。
いったん作ったpharアーカイブは、普通のファイルと同じようにファイル操作関数で操作が可能です。
Phar::addFile()の第二引数を指定すると、指定した別名で保存できます。
呼び出しすときも別名での指定となります。
またPhar::addFile()のかわりに、$phar['TestClass4.php']のように配列でも保存可能です。
今回はテスト用のどうでもいいデータでしたが、実際に活用されているものとしてはgo-pear.pharがあります。
まあこれXAMPPに入ってるやつは動かないんですけど。
画像はこちらのフリー素材を使用させていただきました。
http://www.lovecandied.com/
Pharクラスにはなんかすごい数のメソッドが詰まっていて一見よくわからないのですが、実際使うメソッドはほとんどありません。
Phar::getModifiedとかどんなときに使うんだよって話ですよ。
まず必要なのはphp.iniの設定変更。
pharの作成を公開サーバで行う必要は皆無なので、デフォルトでは禁止されています。
phar.readonly = 0
phar.require_hash = 0
を設定することでpharアーカイブの作成が可能になります。
http://php.net/manual/ja/phar.configuration.php#ini.phar.readonly
では作成。
<?php $phar = new Phar('TestClasses.phar', 0); $phar->addFile('TestClass1.php'); $phar->addFile('TestClass2.php'); $phar->addFile('TestClass3.php', 'subdir/filename.php'); //別名で保存 $phar['TestClass4.php'] = file_get_contents('TestClass4.php'); //配列形式でも保存可能 $phar->addFile('mushroom.gif'); //PHP以外も保存可能ファイル'TestClasses.phar'に5ファイルを詰め込みました。
実に簡単ですね。
完成したものが、前回使用したpharファイルになります。
いったん作ったpharアーカイブは、普通のファイルと同じようにファイル操作関数で操作が可能です。
<?php require_once('phar://TestClasses.phar/TestClass1.php'); require_once('phar://TestClasses.phar/TestClass2.php'); require_once('phar://TestClasses.phar/subdir/filename.php'); require_once('phar://TestClasses.phar/TestClass4.php'); print(file_get_contents('phar://TestClasses.phar/mushroom.gif'));画像ファイルをrequire_once()したりすると当然エラーになります。
Phar::addFile()の第二引数を指定すると、指定した別名で保存できます。
呼び出しすときも別名での指定となります。
またPhar::addFile()のかわりに、$phar['TestClass4.php']のように配列でも保存可能です。
今回はテスト用のどうでもいいデータでしたが、実際に活用されているものとしてはgo-pear.pharがあります。
まあこれXAMPPに入ってるやつは動かないんですけど。
画像はこちらのフリー素材を使用させていただきました。
http://www.lovecandied.com/
PR
トラックバック
トラックバックURL: