【问题标题】:How do you generate Modules Models in ZF and Doctrine?如何在 ZF 和 Doctrine 中生成 Modules 模型?
【发布时间】:2010-11-18 22:08:01
【问题描述】:

我想弄清楚如何为 ZF 中的模块生成模型?我的逻辑可能有缺陷,但设置如下:

我有一个用于模块的 ZF 结构设置。我有一个博客模块和一个游戏模块。我希望这两个系统彼此独立,但共享相同的公共模块,例如用户帐户,它们将托管在单独的数据库中,即 Blog DatabaseGame DatabaseCore database。所以我的结构看起来像:

ZF /
 - applications /
   - configs
   - controllers
   - models
      User.php
   - modules
     - blog
       - controllers
       - models
          Blog.php
       - views
     - games
       - controllers
       - models
          Games.php
       - views
   - views

我只是有点困惑如何让学说为各个模块生成模型。我可能完全看错了,如果有人能提供一些见解,我会非常感激,而不是手动完成。回到尝试对其进行更多研究,看看我是否能找到解决方案。

谢谢。

【问题讨论】:

    标签: php zend-framework doctrine models


    【解决方案1】:

    AFAIK 你不能以你的方式生成它们 :( ,抱歉。 我之前遇到过同样的问题,我认为最好的解决方案是从应用程序文件夹中生成模型并将它们放入 Library 文件夹中,这样结构就会是

    ZF /
     - applications /
       - configs
       - controllers
       - models
       - modules
         - blog
           - controllers
           - models
           - views
         - games
           - controllers
           - models
           - views
       - views
     -library/
       -your_custom_namespace 
            -Model
              User.php
              Blog.php
              Games.php
    

    因此您的所有模型都将具有相同的前缀 + 节省手动编辑每个生成的模型以适应其命名空间的时间和痛苦。

    在我的学说cli下面

    <?php
    echo "Hello Tawfek ! , Howdy ?? \n";
    /**
     * Doctrine CLI
     */
    error_reporting(E_ALL);
    define('ROOT_PATH', realpath(dirname(__FILE__)));
    define('APPLICATION_PATH', realpath(dirname(__FILE__) . "/../"));
    define('APPLICATION_ENV', 'development');
    //Ensure library/ is on include_path
    set_include_path(implode(PATH_SEPARATOR, array(
        '../library',get_include_path(), "/home/Sites/site/library/" )));
    /** Zend_Application */
    require_once 'Zend/Application.php';
    
    // Create application, bootstrap, and run
    $application = new Zend_Application(
        APPLICATION_ENV,
        APPLICATION_PATH . '/configs/application.ini'
    );
    
    // Read in the application.ini bootstrap for Doctrine
    $application->getBootstrap()->bootstrap('doctrine');
    
    // Create the configuration array
    $config = $application->getOption('doctrine');
    // (Note you can have all of these in application.ini aswell)
    $config['generate_models_options'] = array(
        // Define the PHPDoc Block in the generated classes
        'phpDocPackage'         =>'site',
        'phpDocSubpackage'      =>'Models',
        'phpDocName'            =>'Your Name Goes here',
        'phpDocEmail'           =>'Your Email',
        'phpDocVersion'         =>'1.0',
        // Define whats what and named how, where.
        'suffix'                => '.php',
        'pearStyle'             => true,
        'baseClassPrefix'       => 'Base_',
        // Unless you have created a custom class or want Default_Model_Base_Abstract
        'baseClassName'         => 'Doctrine_Record',
        // Leave this empty as specifying 'Base' will create Base/Base
        'baseClassesDirectory'  => NULL,
        // Should make it Zend Framework friendly AFAIK
        'classPrefix'           => 'Dagho_Model_',
        'classPrefixFiles'      => false,
        'generateBaseClasses'   => true,
        'generateTableClasses'  => false,
        'packagesPath'          =>  APPLICATION_PATH "/../library/Dagho/Model" ,
        'packagesFolderName'    => 'packages',
    
    );
    
    $cli = new Doctrine_Cli($config);
    $cli->run($_SERVER['argv']);
    ?>
    

    【讨论】:

    • 谢谢你,这就是我的想法。在完全放弃我自己的自定义 Doctrine_Cli 之前,我还有一些其他想法。但是感谢您为我确认这一点。欣赏它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多