2013-02-26 123 views
0

我剛開始使用zend框架。我在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 

如果任何人知道這一點請大家幫我一個錯誤。

在此先感謝。

+0

爲什麼不用ZF2而不是ZF1開始? – sdespont 2013-02-26 15:39:15

回答

1

一些評論/意見:

  1. 你方法Bootstrap::_autoload()將無法​​運行。 Bootstrap將自動運行_initXXX()表單中的所有方法。

  2. 通常情況下,你不會把模型放在modules/core/DB/*。您可以將它們放入modules/core/models/*默認資源自動加載器知道在那裏查找它們。

  3. 您在指定應用程序名稱空間Application_。這意味着像application/models,application/services,application/forms等目錄中的所有類將以Application_Model_Something的形式命名,而不僅僅是Something。但是由於您已將這些類放在覈心模塊中,因此它們將被命名爲Core_Model_Something

  4. 如果你想使用的模塊,那麼你應該在你的application/configs/application.ini

  5. 一個resources.modules[] =聲明您通常爲每個模塊的引導類 - 命名,〔實施例,Core_Bootstrap - 延長Zend_Application_Module_Bootstrap。這將確保調用模塊的標準資源自動加載器。

這應該讓你更接近。坦率地說,這裏有很多事情發生,所以這不太可能是一個完整的清單。重要的部分是瞭解系統需要知道爲了加載不在include_path(類似於模型,表單等)的類:系統需要知道的一個名稱空間前綴,它需要開始執行PSR的基本路徑-0建設。

+0

+1 =>很好的答案。 – sdespont 2013-02-26 15:42:16