ClassLoaderというクラスを使う(パーフェクトPHP)

割りと始めたばかりなのに、パーフェクトPHPを読んでみてます。

でフレームワークを作成する際に下記のようなクラスがあるのですが。

class ClassLoader{
    protected $dirs;
    public function register(){
        spl_autoload_register(array($this, 'loadClass'));
    }
    public function registerDir($dir){
        $this->dirs[] = $dir;
    }
    public function loadClass($class){
        foreach ($this->dirs as $dir) {
            $file = $dir . '/' . $class . '.php';
            if (is_readable($file)) {
                require $file;
                return;
            }
        }
    }
}

これの意味がイマイチわからなかったのですが、名前空間とautoload、標準的なClassLoaderの実装で割りと理解したので、メモします。

require '上記のClassLoader.phpのパス';
$loader = new ClassLoader();
$loader->registerDir(dirname(__FILE__).'/ディレクトリ名');
$loader->register();

のように上記でディレクトリを指定します。

そうすると、指定したディレクトリの中のクラスをrequireなしで、使えます!

正確には、使う時にrequireしてくれます。spl_autoload_registerがautoloadしてくれる為にあるようですが、あるとかなり便利なようです!(まだ使い方がイマイチ分からない(汗))

  • written on 2012.10.31
  • category : php

Next / Prev

前の記事:

次の記事:

Same Category

Page top↑