zoukankan      html  css  js  c++  java
  • Symfony2目录结构说明

    了解框架的目录结构是框架快速入门的一个途径,一个成熟的框架,每个功能模块都被划分存放在不同的目录。

    Symfony2一级目录结构:

    ├── app                //这目录下包含了,配置文件(应用的配置文件会被import到这里面的配置文件中才生效)、缓存的类、缓存的模板
    ├── bin
    ├── composer.json
    ├── composer.lock
    ├── LICENSE
    ├── README.md
    ├── src                //我们编写的应用存放在这个目录下(包含Controller、Model、View、路由配置文件、应用的配置文件等)
    ├── UPGRADE-2.2.md
    ├── UPGRADE-2.3.md
    ├── UPGRADE-2.4.md
    ├── UPGRADE.md
    ├── vendor            //Symfony2的核心模块(HttpKernel组件、DependencyInjection组件等)和第三方插件(最常用的第三方插件SonataAdmin)存放在这目录下
    └── web               //入口脚本文件存放在这目录下

    以下为Symfony2二级目录和子目录的主要说明

    web目录主要文件说明:

    ├── app_dev.php                          //调试模式下的入口文件(在调试模式下可以额外输出应用的运行信息,包括加载时间、执行的路由、执行sql语句等)
    ├── apple-touch-icon.png
    ├── app.php                              //生产环境下的入口文件(相当于TP框架index.php作用)
    ├── bundles
    ├── config.php
    ├── favicon.ico
    ├── robots.txt

    app目录主要目录和文件说明:

    ├── AppCache.php
    ├── AppKernel.php                                //入口文件里面会初始化一个AppKernel类,AppKernel类就是在这个文件里面,Appkernel类的主要功能是初始化整个web应用的Bundle。
                                                     //包括Symfony2框架的核心Bundle、第三方插件的Bundle、我们自己编写的应用的Bundle,Bundle在Symfony2里面就相当于一个具有完成
                                                     //某一功能的完整的包,而且我们要用的Bundle都必须在AppKernel类里面注册。
                                                     
    ├── autoload.php                                 //该文件负责自动加载注册在里面的类,通常我们不需要手动修改它
    
    ├── bootstrap.php.cache                          //Symfony2核心的类的缓存文件,Symfony2框架必须用到的核心的类都会被编写整理到这个文件里面。这样做的目的是减少运行的时候打开
                                                     //文件的个数,提高运行的速度。因为不同的类都被存放在不同的文件里面,如果没有把这些必要的类缓存在一个文件里面,那么我们每次运行
                                                     //都要打开多个文件。如果把这些必要的类整理到一个文件里面,那么我们每次运行这些类就在同一个文件里面了。例如:Request类、Response类、
                                                     //Container类、Kernel类等都会被缓存到这个文件里面。所以,如果我们想在 Request类 里面 echo '在Request里面调试'; 这样的语句,我们就把
                                                     //这语句编写在bootstrap.php.cache文件下的Request类而不是symfony/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Request.php
                                                     //里面的Request类。其实symfony/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Request.php里面的Request类就被缓存到bootstrap.php.cache
                                                     //里了
                                                     
    ├── cache                                        //缓存目录,按不同模式(生成模式、调试模式)缓存。主要缓存了模板文件、Container类、路由映射相关数据等
    │   ├── dev
    │   └── prod
    ├── check.php
    ├── config                                       //存放配置文件的目录,config_dev.yml和config_prod.yml才是被Symfony2框架加载的配置文件。但是为了方便管理,我们会把不同模块的配置
                                                     //编写到不同配置文件中,要使这些配置文件生效,那么我们还需要import它们进config_dev.yml和config_prod.yml。
                                                     
    │   ├── config_dev.yml                           //调试模式的配置文件    
    │   ├── config_prod.yml                          //生成模式的配置文件
    │   ├── config_test.yml
    │   ├── config.yml                               //通用的配置文件,只要import进相应的调试模式下的配置文件,就可以生效
    │   ├── parameters.yml                             //存放配置文件使用的变量,例如:数据名、数据库密码、数据库host等等
    │   ├── parameters.yml.dist
    │   ├── routing_dev.yml                          //调试模式下的路由配置文件,我们在src里面编写的路由配置文件需要import到这个文件写才可以生效
    │   ├── routing.yml                              //通用路由配置文件
    │   └── security.yml                             //防火墙配置文件,这里的防火墙是web应用防火墙,不是服务器的防火墙,里面配置有角色权限、ACL等,这个文件需要config_*.php import进去才可以生效
    ├── console
    ├── logs                                         //Symfony2运行的日志,同理,不同模式下有不同的日志
    │   ├── dev.log
    │   └── prod.log
    ├── phpunit.xml.dist
    ├── Resources
    │   └── views
    └── SymfonyRequirements.php

    src下的一个demo的目录说明:

    ├── DemoBundle                               //src目录下存放的就是我们应用层的代码,一个功能就可以组织成一个Bundle,例如简单一点的一个购物车功能、复杂一点的
                                                 //一个博客系统都可以组织成一个Bundle。
    │   ├── AcmeDemoBundle.php                   //还记得app/AppKernel.php吗?每一个Bundle要被Symfony2框架加载并起作用,都需要把Bundle注册到AppKernel类,其实就是
                                                 //把这个文件里面的Bundle类注册到AppKernel类,我们可以手动添加到AppKernel类,也可以通过命令行生成一个Bundle的时候
                                                 //添加到AppKernel里面。
    │   ├── Command
    │   ├── Controller                           //Controller目录,顾名思义,这个目录下存放的就是Controller类,如果不懂什么是Controller,麻烦请先学习MVC
    │   ├── DependencyInjection                  //该目录存放对AcmeDemoBundle的扩展
    │   ├── EventListener                        //该目录存放事件监听器的类,Symfony2框架是一个事件驱动的框架,不同的阶段会触发不同的时间,监听器只要监听相应的事件,
                                                 //那么相应事件触发时,这些监听器就会被执行。如果刚接触不是很懂,可以不用太纠结,往后深入会接触到。
    │   ├── Form                                 //该目录存放着表单类。
    │   ├── Resources                            //该目录存放着Bundle的配置文件、模板文件等
            ├── config
                ├── routing.yml                  //该文件存放着Bundle的路由配置
                └── services.xml                 //该文件存放着Bundle的services配置
            ├── public
            └── views                            //该文件夹存放着Bundle的所有模板文件
    │   ├── Tests
    │   └── Twig  
  • 相关阅读:
    int func(int aa[4]) { return sizeof(aa);}
    C语言中的undefined behavior系列(3) trap representation
    面试被轮及访博客园三人组蹭饭记 20100910
    关于带新人和作新人。
    [C++]Call virtual member function in constructor or destructor
    The using declaration in C++
    WF & WCF(5)
    sqlserver 常用函數
    WF & WCF(4)
    oracle 三種集合類型比較(indexby表,嵌套表,數組)
  • 原文地址:https://www.cnblogs.com/szuyuan/p/4015402.html
Copyright © 2011-2022 走看看