内容へ移動
[[
✎ programming:php:autoload:start
]]
doku@ainoniwa
文書の表示
最近の変更
サイトマップ
ログイン
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== __autoload ====== * PHPでクラス実装をし始めたら、require_onceを多用することになった。 - require_onceは遅い。 * http://blog.apecell.com/2007/10/22/id/19 * index.phpにrequire_onceがひたすら並ぶ。 * 途中でrequire_onceするファイルが出てくる場合は尚更読みにくくなる。 * どんだけ初期化に時間かかるんだ。 * 最終的な出力に必要ないクラスまで読み込むとかいらなくない? * 後からクラス追加したらまたここに書くの? * プラグインを他の人が作ったら、rewuire_onceする行まで書かなきゃいけないの? - requireで書く。 * どうせ "PHP Fatal error: Cannot redeclare class" を頻発する。 * 毎回class_existの分岐を書くとか面倒です。 - $class = new Class;した時に、勝手にclassファイルをロードしてくれたら楽なのにね。 - そうだね、autoload使おうね。 * __autoloadを実装すると - $class = new Class;すると、クラス名を引数に__autoloadが呼ばれる。 - じゃあ引数に合わせてクラス定義のあるファイルをrequireすればいいよね。 - というコードを書く。 * spl_autoload_register使って自分用に名前付けしたほうがいいよね。 * まだあんまり実感わかないけど。 * メモ。 * <code>class CoreAutoload { public static function autoload( $class ) { //class already exists, return true; if( class_exists( $class, false ) || interface_exists( $class, false ) ){ return true; } //extension setting $file = $class.'.php'; $dirs = array('core/','plugins/'); //search class file in directries foreach( $dirs as $value ){ $path = $value . $file; if( is_file($path) ){ require $path; return true; } } } } if(function_exists('__autoload')){ spl_autoload_register('__autoload'); } spl_autoload_register( array('CoreAutoload', 'autoload') ); </code>
文書の表示
以前のリビジョン
メディアマネージャー
文書の先頭へ