PHPのfunctionとclassについて質問です。


基本的にphpが実行されると上から下へ順次判定や処理がされていきますが
それぞれが読み込まれるタイミングがよくわかりません。

functionについて

1.php内に記載していてもコールされない限り読み込まれない
2.php内に記載されていればコールされなくても読み込まれる


classについて

1.php内に記載していてもコールされない限り読み込まれない
2.php内に記載されていればコールされなくても読み込まれる

それぞれどちら(もしくは違うタイミング)が合っているのでしょうか。

不要なものは読み込まずにしたいと思っているのですが、どういったタイミングで読まれるのかがよくわかりません。
実行されなくても読まれるのであれば膨大な関数やクラスは細かく分割したいと考えてますし、php内に記載していてもコールしないと読まれないのであればそのまま記載しておいても良いかと考えております。

識者の方のアドバイスいただけると助かります。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/11/15 00:10:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント50pt

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つプログラムに書かれた文を解釈しながら機械語に変換して実行するソフトウェアです。

id:quocard

回答ありがとうございます。

includeされていれば実行されなくても中間コードに変換されるので読み込まれるということですかね。
同じ系統や機能は1つのものにまとめていたのですが
関数やクラスも多くなってきたら分割したほうがよさそうですね。

2012/11/08 13:01:51
id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154

ポイント50pt

php は、一旦、中間コードに翻訳されます。
だからこそ、APC のようなコードキャッシュのような技術が出てきます。
翻訳は、コードが読み込まれたときに行われます。
function や class は、実際に呼び出されなくても、require されたタイミングで翻訳されます。
利用されるコードがレアなタイミングであれば、require を if で括る、という方法もあると思いますが、コードの利用状況がきっちりと特定できるケースは稀だと思いますので、キャッシュする方向で考えた方が良いのではないでしょうか。

"php キャッシュ" でググると、いろいろ情報が見つかると思いますが、メジャーどころだと APC か memcached になるんじゃないかと思います。
http://phpspot.org/blog/archives/2008/03/php_93.html

id:quocard

回答ありがとうございます。

includeでもrequireでも読まれた瞬間に使わなくても機械語にするために読まれるということですね。
同じ機能のものを1つの関数やクラスにまとめていたので分割を考えていたのですが、キャッシュについて検討してみます。
ありがとうございました。

2012/11/08 13:03:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません