58
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

pharを使ってみる

Last updated at Posted at 2013-10-04

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をはじめ使われている例もわりとあるようです。

58
47
2

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
58
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?