0

zendフレームワークを使い始めたばかりです。zendでプロジェクトを作成しました

構造

 application
     configs
         application.ini
     layouts
     modules
         core
           DB
             Dbclass.php
           Table
         default
           controllers
           views
           forms
     bootstrap.php
 library
 public
 index 

私のブートストラップファイルには

 public function _autoload(){

    set_include_path(
    '/application/modules/core/DB' 
    . PATH_SEPARATOR . 
    '/application/modules/core/Table' 
    . PATH_SEPARATOR . 
    get_include_path());
}
public function _init(){

    $front = Zend_Controller_Front::getInstance();
    $front->setControllerDirectory(array(
    'default' => APPLICATION_PATH.'/modules/default/controllers'
    ));
}

私のapplication.iniファイルには

 [production]
 phpSettings.display_startup_errors = 0
 phpSettings.display_errors = 0
 phpSettings.date.timezone = "Europe/London"
 ;includePaths.library = APPLICATION_PATH "/../library"
 bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
 bootstrap.class = "Bootstrap"
 appnamespace = "Application"
 ;resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
 resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
 resources.frontController.moduleControllerDirectory = APPLICATION_PATH   "/modules/controllers"
resources.frontController.defaultModule = "default"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

resources.frontController.params.displayExceptions = 0

indexcontrollerでオブジェクトを作成するとき

 $new_object = new Dbclass();

次のことを示すエラーがあります

 Fatal error: Class 'Dbclass' not found in D:\xampp\htdocs\pubman\application\modules\default\controllers\IndexController.php on line 16

誰かがこれを知っているなら、私を助けてください。

前もって感謝します。

4

1 に答える 1

1

いくつかのコメント/観察:

  1. メソッドBootstrap::_autoload()は実行されません。Bootstrapは、フォームのすべてのメソッドを自動的に実行します_initXXX()

  2. 通常、モデルをに配置しませんmodules/core/DB/*。あなたはそれらをそこに置くでしょうmodules/core/models/*。デフォルトのリソースオートローダーはそこでそれらを探すことを知っています。

  3. appnamespaceを指定していますApplication_。つまり、、、などのディレクトリ内のすべてのクラスは、application/modelsあなたが持っているのと同じようにではなく、の形式で名前が付けられます。ただし、これらのクラスはコアモジュール内に配置されているため、のような名前になります。application/servicesapplication/formsApplication_Model_SomethingSomethingCore_Model_Something

  4. モジュールを使用する場合は、resources.modules[] =宣言を行う必要がありますapplication/configs/application.ini

  5. 通常、モジュールごとにBootstrapクラスがあります(例として、名前が付けられていますCore_BootstrapZend_Application_Module_Bootstrap。これにより、モジュールの標準リソースオートローダーが確実に呼び出されます。

これはあなたを近づけるはずです。率直に言って、そこでは多くのことが起こっているので、これが完全なリストになる可能性は低いです。include_path重要な部分は、 (モデル、フォームなど)にないクラスをロードするためにシステムが知る必要があることを理解することです:名前空間プレフィックス、PSRの実行を開始する必要があるベースパス- 0建設。

于 2013-02-26T05:32:56.153 に答える