Pages

2010年2月17日水曜日

Zend_Loader_Autoloader、Zend_Loader_Autoloader_Resource を使って環境構築する

今回はちょっと無理かもって思ったけどいけてよかったw
今回の目的はZend_Actionを利用したくないけど、できるだけコンポーネントは利用したいというのが趣旨だった。。。

なぜそんな事をするのか?
それはフレームワークが理解できない人、もしくは理解する気が無い人にも気持ちよく理解してもらうためw

Zend_Actionを使うと途端にフレームワークのとっつきにくところが全面的に出てくる気がする。
もちろんそれが理解できないプログラマーってどうよ。。。ってなるのだが、そういう人もいるのが会社である♪できる人だけがどんどん先に進んでいてもそれはただの自己満足。。。

という事で最終目標はZend_Actionを利用したZend_Framework?別に普通じゃない?って思ってしまう事です♪

試した方法としては簡単で、 段階を踏んで導入ですw

その中で今回の目的はディレクトリ構造に馴染む事を目的としました。
フレームワーク毎に違うこのディレクトリ構造。
これは慣れしかありませんので、早い段階で馴染んでもらうために導入しました。

ちなみにブログには書いてませんが、Zend_Formは既に馴染んでもらっています。
※Zend_FormにはZend_ValidateとZend_Filterが含まれる事としてます。
/**
 * Autoloaderを設定
 */
require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->unregisterNamespace(array('Zend_', 'ZendX_'))
           ->setFallbackAutoloader(true);

require_once 'Zend/Loader/Autoloader/Resource.php';
$resourceLoader = new Zend_Loader_Autoloader_Resource(array(
    'basePath'  => WEBAPP_ROOT . '/common',
    'namespace' => 'Default',
));
$resourceLoader->addResourceTypes(array(
    'dbtable' => array(
        'namespace' => 'Model_DbTable',
        'path'      => 'models/DbTable',
    ),
    'mappers' => array(
        'namespace' => 'Model_Mapper',
        'path'      => 'models/mappers',
    ),
    'form'    => array(
        'namespace' => 'Form',
        'path'      => 'forms',
    ),
    'model'   => array(
        'namespace' => 'Model',
        'path'      => 'models',
    ),
    'plugin'  => array(
        'namespace' => 'Plugin',
        'path'      => 'plugins',
    ),
    'service' => array(
        'namespace' => 'Service',
        'path'      => 'services',
    ),
    'viewhelper' => array(
        'namespace' => 'View_Helper',
        'path'      => 'views/helpers',
    ),
    'viewfilter' => array(
        'namespace' => 'View_Filter',
        'path'      => 'views/filters',
    ),
));
上記の設定は2つの設定を行っています。
1つめは  Zend_Loader_Autoloader です。
$loader = new Zend_Loader();
と記載した時に別に Zend_Loader をincludeしなくても自動的に行ってくれるという設定です。
これはただ「_(アンダースコア)」を/に置換してるだけみたいな感じなので、簡単ですね。

続いて Zend_Loader_Autoloader_Resource です。
こいつは Zend_Loader_Autoloader で設定したけど例外的なパターンを宣言したいって感じの時に使います。

それぞれ目的は違いますが、今回のこの目的でOKなのでOKですw
Model_Mapper が予約されてたのは今日知りました。。。w
QuickStartはmodelの中にMapperいなかったっけ。。。w

0 件のコメント:

コメントを投稿

Followers