PHP4では、使うクラスは予め読んでおかないと使えないということがありました。
これは、実際の処理では使われないクラスもパーシングされ、インタプリタで動作するPHPでは処理速度に影響が出てきてしまうというものでした。
PHP5では、存在しないクラスを呼び出そうとしたときには、ある関数を呼び出して読み込む、ということが出来るようになります。
ある関数、とは __autoload() というメソッドで、
function __autoload($className) {
include_once("class/".$className.'.inc');
}
のように定義します。
$a = new CGI;
のようにして、CGIクラスを作成しようとして、CGIクラスが読み込まれていなかった場合、__autoload が呼ばれ、引数の、$className に "CGI" が渡され、class ディレクトリ以下の CGI.inc が自動で読み込まれるように上記では設定しています。
クラスファイルを追加するたびに include をファイルに定義するのは非常に面倒でしたので、これは非常に嬉しい機能ですね。
不要なクラスはパーシングしないでもよいので処理速度向上が見込める、というのも嬉しいことですね。
上記、__autoload の定義では、存在しなかった場合に読み込むディレクトリは class ディレクトリのみ
ですが、file_exists とかで、複数のディレクトリにクラスファイルを分散させることも出来るように__autoload 関数にて自分で定義できるようになっています。
スポンサードリンク
もどる