__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.txt · 最終更新: 2011/08/24 10:07 (外部編集)
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0