symfont 的 MVC 实现

  • 模型层

    • 数据库抽象层

    • 数据访问

  • 视图层

    • 视图

    • 模板

    • 布局

  • 控制层

    • 前端控制

    • 动作

symfont 的工作流:

代码组织

代码组织实例:

根目录文件树结构

  • apps/:一个子目录对应一个应用,通常是 frontend 对应前台,backend对应后台。

    • frontend/

    • backend/

  • batch/:需要从命令行运行或者周期性运行的 PHP 批处理脚本。

  • cache/:配置信息的缓存,以及动作和和模板的缓存(如果你启用了的话)。用这个缓存机制来加速请求的响应速度,每个应用都有一个对应的目录,放置预处理过的
    PHP 和 HTML 文件。

  • config/:每个项目的常规配置信息。

  • data/:项目里和数据相关的文件,比如数据库模式、SQL 文件,甚至是 SQLite
    的数据库文件。

    • sql/

    • functional/

  • doc/:项目文档,包括你自己写的文档,和由 PHPDoc 生成的文档。

  • lib/:外部的类或者库。你可以在这里添加需要在项目级共享的代码。

    • model/:目录里是项目整体的对象模型。

  • log/:由 symfony 直接生成的日志文件。

  • plugins/:插件目录。

  • test/:单元测试和功能测试脚本。在创建项目的过程中,symfony 会自动创建一些测试的。

    • unit/

    • functional/

  • web/:Web 服务器的根目录,只有这个目录里面的文件才能被访问到。

    • css/

    • images/

    • js/

    • uploads/

模型目录树文件结构

  • apps/

    • [application name]

      • [module name]

        • actions/:通常情况下这个目录里只有一个名为 actions.class.php 的文件,这个文件里是该模型的全部动作,你也可以分开成单独的文件。

          • actions.class.php

        • config/:该模型的自定义配置信息,可以有本地化参数。

        • lib/:该模型特有的类库。

        • templates/:与每个动作对应的模板文件。在创建模型的时候会自动生成默认模板文件 indexSuccess.php

          • indexSuccess.php

        • validate/:专门用来校验表单数据的配置文件。

Web 目录树文件结构

  • web/

    • css/:样式表文件。

    • images/:图形文件。

    • js/:JavaScript 脚本文件。

    • uploads/:用户上传的目录。