btoメモ

なんか適当に書く

ライブラリが直接実行された場合はプログラムとして実行する

rubyのライブラリとかで、ファイルの最後に次のような感じになってるものがある。

if __FILE__ == $0

...

end

こういう風に書いておくと、他のファイルからインクルードした場合はライブラリの機能だけ提供するんだけど、そのライブラリ自体を直接単体のスクリプトとして実行できるようにもなる。

でもこれはスクリプトとして使われることを意図してなくて、単なるサンプルプログラムとして提供されています。

これ結構便利なんですよね。

簡単なライブラリの使い方がすぐに分かるし、ちょっとお試しで使ってみるのも簡単にできる。

ドキュメント読むよりも、プログラム見た方が早いし。

でも、PHPでやってるのはあんまりみないな。

理由: コマンドラインを活用するPHPプログラマが少ない?

偏見かもしれないけど、コマンドラインを活用しているPHPプログラマが他言語と比較して相対的に少ない気がする。

コマンドラインが必要ないことをメリットにしているプロジェクトもあるし...。

Webアプリ用の言語なのでしょうがないのかな。

コマンドライン便利だけどね。

理由: PHPではargvを取得する簡便な方法がない

PHPではargvを取得する方法が3つもある。

  • $argv

  • $_SERVER['argv']

  • $GLOBALS['HTTP_SERVER_VARS']['argv']

もともとWebアプリ用の言語だからargvなんてのは後付けなんだろうけど、せめて統一して欲しかった...

PEARのConsole_Getoptでも、argvを取得する専用のメソッドが定義されている。

拙作のARGFでも専用のメソッド作りましたよ。

PHPでもやろうよ

こんな感じで簡単にできるよ。

argvの取得は$argvだけで。面倒だから。

if (isset($argv[0]) && __FILE__ === realpath($argv[0])) {

/* sample code */

}