_autoloadが便利

偶然見つけたメソッド __autoload。
最近までphp4ばかり使ってたので、マジックメソッドには疎いのです。

たまたま見つけたサイトで、マジックメソッドについて読んでみて、
早速__autoloadから試してみました。結果は便利です。

私は、phpでプログラムを新規で作る場合は、Zend Frameworkを利用していますが、
だいたいこんなディレクトリ構造です

web/index.php
lib/models/xxxxModel.php
lib/validates/xxxxValidate.php
lib/dbs/xxxxxDb.php
lib/controller/xxxxxController.php

小規模なものしか作っていないので、この階層分けでなんとかなってます。

そこでindex.phpに以下のように __autoloadを追加したら、
各ファイルで、Zend_Loader::loadClassや、require_onceを
記述する必要がなくなってとても楽です。

function __autoload($className)
{
  if (preg_match("/^Zend_/", $className)){
    Zend_Loader::loadClass($className);
    return;
  }

  if (preg_match("/Model$/", $className)){
    require_once('models/' . $className . '.php');
    return;
  }

  if (preg_match("/Db$/", $className)){
    require_once('dbs/' . $className . '.php');
    return;
  }

  if (preg_match("/Validate$/", $className)){
    require_once('validates/' . $className . '.php');
    return;
  }
}