Do You PHP?    
Search Engine Optimization  php5 powerd  Valid XHTML 1.0!  Valid CSS!  このサイトのはてなブックマーク数 



last updated
2004/10/09

counter hits
since 1999/11/06


PHP5を試してみる - クラスファイルの自動読込み

memoサンプルは、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される、ということになります。



About This Site |  Privacy Policy |  Contact
Copyright © 1999 - 2004 by Hideyuki SHIMOOKA all rights reserved.