**以前のリビジョンの文書です**

__autoload

  • PHPでクラス実装をし始めたら、requireonceを多用することになった。 - requireonceは遅い。
    • index.phpにrequireonceがひたすら並ぶ。 * 途中でrequireonceするファイルが出てくる場合は尚更読みにくくなる。
    • どんだけ初期化に時間かかるんだ。
    • 最終的な出力に必要ないクラスまで読み込むとかいらなくない?
    • 後からクラス追加したらまたここに書くの?
    • プラグインを他の人が作ったら、requireonceする行まで書かなきゃいけないの? - requireで書く。 * どうせ “PHP Fatal error: Cannot redeclare class” を頻発する。 * 毎回classexistの分岐を書くとか面倒です。
    • $class = new Class;した時に、勝手にclassファイルをロードしてくれたら楽なのにね。
    • そうだね、autoload使おうね。
  • autoloadを実装すると
    • $class = new Class;すると、クラス名を引数に“autoload”が呼ばれる。 - じゃあ引数に合わせてクラス定義のあるファイルをrequireすればいいよね。 - というコードを書く。 * splautoloadregister使って自分用に名前付けしたほうがいいよね。 * まだあんまり実感わかないけど。 * メモ。 * <code>class CoreAutoload { public static function autoload( $class ) { class already exists, return true; if( classexists( $class, false ) || interfaceexists( $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( isfile($path) ){ require $path; return true; } } } } if(functionexists('autoload')){ splautoloadregister('autoload'); } splautoloadregister( array('CoreAutoload', 'autoload') ); </code>
programming/php/autoload/start.1309993606.txt.gz · 最終更新: 2011/07/07 08:06 by yuki
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0