人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

functionについて

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


classについて

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

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

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

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

●質問者: quocard
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●50ポイント

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


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

2 ● a-kuma3
●50ポイント

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

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


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

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ