• Zend Framework的项目目录结构

    Posted on 九月 25th, 2008 inetdemon No comments

    参考ZF1.6版本之前建议的通用目录结构 ,或许你能找到你现在的代码所使用的目录结构。目前我们开发使用的文件结构
    框架遵循Zend Framework 1.6 Proposal Project Structure如下:

    <project name>/
      application/
        apis/
        config/
        controllers/
            helpers/
        layouts/
            filters/
            helpers/
            scripts/
        models/
        modules/
        views/
            filters/
            helpers/
            scripts/
        bootstrap.php
      data/
        cache/
        indexes/
        locales/
        logs/
        sessions/
        uploads/
      docs/
      library/
      public/
        css/
        js/
        images/
        .htaccess
        index.php
      scripts/
        jobs/
        build/
      temp/
      tests/

    2009/7/30更新:ZF1.8的推荐项目目录结构:

    根据项目的复杂度不同和需要不同,可以有不同的目录构造,Zend Framework所推荐的目录结构如这篇proposal所示。我所使用的目录结构图和ZF的规范相同,可以用zend tool直接生成:

    dev:~# cd /var/www/jefflei
    dev:~# zf create project .
    Creating project at /var/www/jefflei

    目录结构大致如示意图所示,因为比较懒,借用了别人的结构图。我们使用的有如下几点不同:

    1. .htaccess, index.php是放在public目录下的,这样方便将document root设置到public目录下,增强安全性。

    2. library。如果不是需要同时在多个项目中使用不同版本的Zend Framework类库,建议将ZendFramework类库放在项目目录的外面,这样减少主项目的size。

    3. Modules目录下通常是application目录结构的迭代,比如:

    `-- application
    |  `-- controllers
    |  `-- models
    |  `-- views
    |  `-- modules
    |  |   `-- foo
    |  |       `-- controllers
    |  |       `-- models
    |  |       `-- views
    |  |       `-- Bootstrap.php  ⇐ class Foo_Bootstrap extends Zend_Application_Module_Bootstrap
    |  `-- Bootstrap.php ⇐ class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    `-- public

    以上部分也可以用Zend Tool来生成:

    dev:~# zf create module foo
    Creating the following module and artifacts:
    /var/www/jefflei/application/modules/foo/controllers
    /var/www/jefflei/application/modules/foo/models
    /var/www/jefflei/application/modules/foo/views
    /var/www/jefflei/application/modules/foo/views/scripts
    /var/www/jefflei/application/modules/foo/views/helpers
    /var/www/jefflei/application/modules/foo/views/filters
    Updating project profile '/var/www/jefflei/.zfproject.xml'
    
    dev:~# zf create controller index index-action-included=1 foo

    另外一些大型项目一般都会另外单独建立extension目录,运行项目之间共享common的代码,大致结构如下:

    ;;;;extensions?;;;;
    ;   extensions/
    ;       <extension_name>
    ;           application/
    ;               configs/
    ;                   ownroute.ini
    ;                   extension.ini
    ;               controllers/
    ;                   helpers/
    ;               views/
    ;                   filters/
    ;                   helpers/
    ;                   scripts/
    ;               layouts/
    ;                   filters/
    ;                   helpers/
    ;                   scripts/
    ;               models/
    ;           docs/
    ;           data/
    ;               indexes/
    ;               locales/
    ;               logs/
    ;               uploads/
    ;           library/
    ;           override_public/
    ;               scripts/
    ;               styles/
    ;               images/
    ;;;;extensions?;;;;

    Leave a reply