PerlのautoloadとPHP5の__autoloadて全然違うんじゃ?と思いまして、
とりあえず@ITのPHP5関連記事などを参考にしつつ
PHP5のそれを試してみました。
Momo.php(読み込まれるクラス)
<?PHP
class Momo {
private $upopo;
public $muhoho = 'むほほ';public function __construct() {
$this->upopo = 'うぽぽ';
}public function upopo() {
return $this->upopo;
}
}?>
Hoge.php(実行する側)
#!/usr/local/bin/php
<?PHPfunction __autoload($class) {
if ( file_exists($class.'.php') ) {
include_once($class.'.php');
} else if ( file_exists($class.'.class.php') ) {
include_once($class.'.class.php');
}
}function do_Task() {
$var = new Momo();
echo $var->upopo();
echo $var->muhoho;
}do_Task();
?>
実行結果
Hoge.php
うぽぽむほほ
__autoload は動的にクラスファイルを include する用途が
ほとんどなんではないでしょうか。
というか、他の使い方ってあるんだろうか。
Perlのいわゆる「autoload」はPHPでは「__call」になってますね。
DB_DataObjectなどのORマッパー周りやMVCの
BaseClass辺りで便利に使えそうです。









