### 一、架构总览 YAF是经典的MVC架构,主要组件如下: **(1)应用** YAF系统架构与生命周期的对象,由系统类Yaf_Application(启用命名空间的情况下是Yaf\Application)类完成,在入口文件中被初始化并被启动,在应用中可以使用Yaf_Application::app()(启用命名空间的情况下是Yaf\Application::app())来引用该对象 **(2)模块** 一个典型的应用是由多个模块组成的,这些模块通常都是应用目录下面的一个子目录,每个模块都自己独立的配置文件、公共文件和类库文件。模块可以功能分组。 **(3)控制器** 应用的调度层。每个模块拥有独立的MVC类库及配置文件,一个模块下面有多个控制器负责响应请求,而每个控制器其实就是一个独立的控制器类。 控制器主要负责请求的接收,并调用相关的模型处理,并最终通过视图输出或直接输出。严格来说,控制器不应该过多的介入业务逻辑处理。 **(4)操作** 一个控制器包含多个操作(方法),操作方法是一个URL访问的最小单元。在YAF中只有带Action后缀的方法才会对外部访问者开发。在YAF中还可以定义一个Action类处理某个操作。 **(5)模型** 应用的数据逻辑层。YAF框架中并没有自带数据库操作的类,我们可以自己封装相关DB操作,如使用PHP自带的PDO来对模型进行封装。 **(6)视图** 应用展示层。YAF框架自带了一个类似原生的视图,当然也可以集成第三方模板引擎如Smarty、Mustache等 **(7)插件** 通过内置的钩子工具可以实现在相应的执行阶段注册相关插件。