了解框架的目录结构是框架快速入门的一个途径,一个成熟的框架,每一个功能模块都被划分存放在不一样的目录。php
Symfony2一级目录结构:web
├── 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二级目录和子目录的主要说明sql
web目录主要文件说明:数据库
├── app_dev.php //调试模式下的入口文件(在调试模式下能够额外输出应用的运行信息,包括加载时间、执行的路由、执行sql语句等) ├── apple-touch-icon.png ├── app.php //生产环境下的入口文件(至关于TP框架index.php做用) ├── bundles ├── config.php ├── favicon.ico ├── robots.txt
app目录主要目录和文件说明:json
├── 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的目录说明:bootstrap
├── 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