ライブラリが直接実行された場合はプログラムとして実行する
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を取得する専用のメソッドが定義されている。
PHPでもやろうよ
こんな感じで簡単にできるよ。
argvの取得は$argvだけで。面倒だから。
if (isset($argv[0]) && __FILE__ === realpath($argv[0])) {
/* sample code */
}