忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/09/21 01:34 |
PHP5.3 pharアーカイブを作成
前回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

では作成。
<?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


2011/07/25 22:24 | Comments(0) | TrackBack(1) | PHP

トラックバック

トラックバックURL:
前回はpharアーカイブをライブラリとして使用しましたが、実はpharアーカイブだけで完全な動作をするPHPプログラムを作成可能です。 この利用法、Phar::webPhar()あたりをよく読めば書いてあるのですが、物凄く便利っぽい機能にもかかわらず何故か何処にもこれを使ってみたという人が見あたらない不思議。 まあとりあえずでっちあげてみたのがこちら。 http://file.yuubiseiharukana.blog.shinobi.jp/20110730-index.phar.zip...
弱小PHPerの憂鬱 | 2011/07/30 01:45

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<PHP5.3 pharでWebアプリを作ってみた | HOME | 買ったものリスト 2011/07/24>>
忍者ブログ[PR]