Symfony2學習筆記之目錄結構

listwebit發表於2015-06-30

瞭解框架的目錄結構是框架快速入門的一個途徑,一個成熟的框架,每個功能模組都被劃分存放在不同的目錄。

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

相關文章