基本的にphpが実行されると上から下へ順次判定や処理がされていきますが
それぞれが読み込まれるタイミングがよくわかりません。
functionについて
1.php内に記載していてもコールされない限り読み込まれない
2.php内に記載されていればコールされなくても読み込まれる
classについて
1.php内に記載していてもコールされない限り読み込まれない
2.php内に記載されていればコールされなくても読み込まれる
それぞれどちら(もしくは違うタイミング)が合っているのでしょうか。
不要なものは読み込まずにしたいと思っているのですが、どういったタイミングで読まれるのかがよくわかりません。
実行されなくても読まれるのであれば膨大な関数やクラスは細かく分割したいと考えてますし、php内に記載していてもコールしないと読まれないのであればそのまま記載しておいても良いかと考えております。
識者の方のアドバイスいただけると助かります。
http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF
PHPは インタプリタなので 読みながら実行かな。
インタプリタ(interpreter)とは、プログラミング言語で書かれたソースコードないし中間表現にある命令列を逐次解釈しながら実行するプログラムのこと。インタプリタは次のいずれかの動作をするプログラムである。
ソースコードを直接実行する。
ソースコードを何らかの効率的な中間言語(コード)に翻訳し、それを即座に実行する。
インタプリタシステムの一部であるコンパイラが生成したコンパイル済みのコードを実行する[1]。
http://sea.ap.teacup.com/phppgm/3.html
PHPのプログラムを作成し、実行するには、PHPのインタープリタが必要です。
インタープリタは、1つ1つプログラムに書かれた文を解釈しながら機械語に変換して実行するソフトウェアです。
php は、一旦、中間コードに翻訳されます。
だからこそ、APC のようなコードキャッシュのような技術が出てきます。
翻訳は、コードが読み込まれたときに行われます。
function や class は、実際に呼び出されなくても、require されたタイミングで翻訳されます。
利用されるコードがレアなタイミングであれば、require を if で括る、という方法もあると思いますが、コードの利用状況がきっちりと特定できるケースは稀だと思いますので、キャッシュする方向で考えた方が良いのではないでしょうか。
"php キャッシュ" でググると、いろいろ情報が見つかると思いますが、メジャーどころだと APC か memcached になるんじゃないかと思います。
http://phpspot.org/blog/archives/2008/03/php_93.html
回答ありがとうございます。
includeでもrequireでも読まれた瞬間に使わなくても機械語にするために読まれるということですね。
同じ機能のものを1つの関数やクラスにまとめていたので分割を考えていたのですが、キャッシュについて検討してみます。
ありがとうございました。
回答ありがとうございます。
2012/11/08 13:01:51includeされていれば実行されなくても中間コードに変換されるので読み込まれるということですかね。
同じ系統や機能は1つのものにまとめていたのですが
関数やクラスも多くなってきたら分割したほうがよさそうですね。