PHP5の「__autoload」

2006年11 月28日  |  Written by matsumoto  |  under PHP Yahoo!ブックマークに登録    はてなブックマーク - PHP5の「__autoload」

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
<?PHP

function __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辺りで便利に使えそうです。

現在コメントはありません | コメントの投稿はこちら

コメントを書き込む

コメント本文

※コメントのフォーム内で以下のタグがご利用いただけます
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

私はチーム・マイナス6%です