PHP5を試してみる - クラスファイルの自動読込み
サンプルは、EXPERIENCEで実際に確認できるようにしてますので、気になる方は見てみてください。
大規模なオブジェクト指向開発では、クラス数が膨大になるため、
- PHPスクリプトの先頭で全クラスファイルをrequire_once/include_onceすることが大変
- スクリプト言語のため、実行時に大量のファイルを読み込むことになり、負荷がかかりそう
と予想されます。そこで、__autoload関数を使用することで、それぞれの負荷を軽減させることが出来るかも知れません。
今回のサンプルは、[クラス名].phlという外部ファイル(3つだけですが。。。)に定義されたクラスを動的にロードする簡単なものです(^-^;
●09.autoload.php5
<?php
function __autoload($class){
require_once './' . $class . '.phl';
}
$o1 = new AutoLoadClass1();
echo 'class name=' . get_class($o1) . '<br>';
$o2 = new AutoLoadClass2();
echo 'class name=' . get_class($o2) . '<br>';
$o3 = new AutoLoadClass3();
echo 'class name=' . get_class($o3) . '<br>';
?>
<hr>
<?php
show_source($_SERVER["SCRIPT_FILENAME"]);
?>
<hr>
<?php
show_source('./AutoLoadClass1.phl');
?>
<hr>
<?php
show_source('./AutoLoadClass2.phl');
?>
<hr>
<?php
show_source('./AutoLoadClass3.phl');
?>
●AutoLoadClass.php5
<?php
class AutoLoadClass extends stdclass
{
}
?>
●AutoLoadClass2.php5
<?php
class AutoLoadClass extends stdclass
{
}
?>
●AutoLoadClass3.php5
<?php
class AutoLoadClass extends stdclass
{
}
?>
●実行結果class name=AutoLoadClass1
class name=AutoLoadClass2
class name=AutoLoadClass3
このスクリプト、本来であれば、各クラスを記述したPHPファイルを先頭でrequire_once/include_onceすることになると思います。ここではRequiredClass1~3の3クラスを使用していますが、これが50クラスとか100クラスとかになると、どうでしょうか?ちょっとゾッとしますね。__autoload関数さえ定義しておけば、必要なときにrequire_once/include_onceされる、ということになります。
|