0

PHP 5.3 と Zend Framework 1.11.7 を使用して、デフォルトのディレクトリ application/models にあるモデル クラス (Zend_Db 用) を自動ロードするように AutoLoader を構成しようとしました。

次の解決策を見つけました。

次の関数を Bootstrap.php に追加できます。

protected function _initLoader() 
{
    $loader = new Zend_Loader_Autoloader_Resource (array (
    'basePath' => APPLICATION_PATH,
    'namespace' => 'Default'));
    $loader -> addResourceType ( 'model', 'models', 'Model'); 
}  

application.ini で簡単に設定できるオプションのようです。私の質問は、私の関数が実行するのと同じタスクを実行する application.ini に追加できる関連ディレクティブはありますか?

アップデート

appnamespace ディレクティブを設定した後、次の関数を追加する必要があります。

protected function _initLoader() 
{    
    $loader = new Zend_Loader_Autoloader_Resource (array (
    'basePath' => APPLICATION_PATH));
    $loader -> addResourceType ( 'model', 'models', 'Model'); 
}

そうしないと、モデル クラスが見つかりません。

唯一の違いは、属性「namespace」を削除したことです。

この関数を完全に削除するために追加できる他の属性はありますか?

ありがとう!:)

クフィル

4

2 に答える 2

1

以下を application.ini に追加します。

appnamespace = "MyNamespace"

次に、MyNamespace_Model_MyModel という名前のクラスを含むファイルを application/models ディレクトリにロードします。

于 2011-06-13T23:24:12.987 に答える
1

application.ini で設定する必要があります

appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

appnamespace はモデルに使用するプレフィックスです。モデルが「Default_Model_User」の場合、appnamespace は「Default」になり、モデルが「Application_Model_User」の場合、appnamespace は「application」になります。

これら 2 つのディレクティブは、デフォルト アプリケーションのオートロードを整理する必要があります。

Zend_Application_Module_AutoLoader を使用する必要があるため、ブートストラップで設定することもできます。

protected function _initDefaultModuleAutoloader()
{
    $this->_resourceLoader = new Zend_Application_Module_Autoloader(array(
        'namespace' => 'Application',
        'basePath'  => APPLICATION_PATH,
    ));
}
于 2011-06-13T23:24:54.873 に答える