瞭解框架的目錄結構是框架快速入門的一個途徑,一個成熟的框架,每一個功能模塊都被劃分存放在不一樣的目錄。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