在上一個文章中咱們說了它的基本的一些結構,以及咱們經過修改入口文件把它移入到public文件夾下面。那麼今天咱們來一塊兒研究一下它的詳細的目錄結構,以及完善一下public文件夾裏面的內容。
今天主要是兩大塊,第一塊是完善public文件夾,第二塊是目錄結構的詳細解讀。javascript
咱們已經把index.php文件成功移植到來咱們的public文件夾下面了,那麼如今咱們在這個文件夾下面建立幾個文件夾用來存放咱們項目中所須要的一些靜態文件。好比:圖片、css樣式、javascript等。按照鳥哥在文檔中所說的,咱們能夠建立如下這幾個文件夾,它們分別是:
css : 用來存儲一些咱們項目中所須要的樣式文件。
img : 用來存儲咱們項目中的一些圖片資源,好比logo、背景圖什麼的。
js : 用來存儲一些咱們項目中的js代碼塊或者第三方庫,如:jquery、vuejs等。
那麼咱們如今就先建立一下它們把,爲咱們接下來的項目作準備:
php
這個文件夾用於存放咱們框架的配置文件,默認配置文件:application.ini。配置項能夠參考鳥哥手冊:www.laruence.com/manual/yaf.…css
這個文件夾的話是咱們框架中的核心,裏面包含了咱們這個框架的總體架構等內容。
裏面有5個文件夾以及一個.php文件,那咱們如今一個一個提及吧!html
你們看到這個別把它誤認爲是前端框架的那個bootstrap不過我相信都不會這麼認爲的。那咱們看看它是作什麼的:
Bootstrap, 也叫作引導程序. 它是Yaf提供的一個全局配置的入口, 在Bootstrap中, 你能夠作不少全局自定義的工做. ——鳥哥
咱們一塊兒來看看鳥哥的這句話,他說bootstrap.php是一個引導程序,是yaf的一個全局的配置的一個入口,也就是說咱們能夠在它裏面作一些配置,好比加載咱們的.ini配置文件,加載咱們的第三方類庫,如圖片處理、日誌處理、composer下載的類庫等。咱們來先看看源碼:前端
<?php
/**
* @name Bootstrap
* @author mateng
* @desc 全部在Bootstrap類中, 以_init開頭的方法, 都會被Yaf調用,
* @see http://www.php.net/manual/en/class.yaf-bootstrap-abstract.php
* 這些方法, 都接受一個參數:Yaf_Dispatcher $dispatcher
* 調用的次序, 和申明的次序相同
*/
class Bootstrap extends Yaf_Bootstrap_Abstract {
public function _initConfig() {
//把配置保存起來
$arrConfig = Yaf_Application::app()->getConfig();
Yaf_Registry::set('config', $arrConfig);
}
public function _initPlugin(Yaf_Dispatcher $dispatcher) {
//註冊一個插件
$objSamplePlugin = new SamplePlugin();
$dispatcher->registerPlugin($objSamplePlugin);
}
public function _initRoute(Yaf_Dispatcher $dispatcher) {
//在這裏註冊本身的路由協議,默認使用簡單路由
}
public function _initView(Yaf_Dispatcher $dispatcher) {
//在這裏註冊本身的view控制器,例如smarty,firekylin
}
}複製代碼
咱們看到了它裏面的每一個方法都是以 _init來開頭的,之因此以 _init開頭主要是它們都會被yaf調用。然而這些方法都會接收一個參數:Yaf_Dispatcher $dispatcher,咱們如今來試着本身定義一個方法看看:vue
public function _initPdobase(Yaf_Dispatcher $dispatcher) {
var_dump('hello,pdo!');
exit;
}複製代碼
在這裏我自定義了一個Pdobase的方法,輸出了一段「hello,pdo!」,這時候會輸出hello,pdo!此刻說明了它被加載了:
java
你們都比較熟悉如今比較流行的web架構:MVC三層架構,那麼這個controllers文件夾中存放的也就是咱們的 C ,也就是控制器,經過自定義控制器如:Index.php 就能夠進行接收客戶端請求,調用數據模型,基本邏輯處理,以及調用視圖,最終完成客戶的請求。它接收請求並決定調用哪一個模型去處理請求,而後再肯定用哪一個視圖來顯示返回的數據。jquery
上面說到了MVC中的 C ,那麼咱們如今就來看看models文件夾是作什麼的,它是存放咱們的 M 。
「模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用像EJBs和ColdFusion Components這樣的構件對象來處理數據庫,被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能爲多個視圖提供數據,因爲應用於模型的代碼只需寫一次就能夠被多個視圖重用,因此減小了代碼的重複性。——百度百科」web
這個文件夾咱們看名字也知道,他是用來存放咱們的視圖文件,這裏面和其餘兩個文件夾不一樣的是,還須要在它裏面建立一個文件夾,而這個文件夾的名字要與控制器的名稱一致,如咱們有個:Index.php控制器,那麼在views下面咱們就要建立一個index文件夾,在這個文件夾裏面咱們來建立模板文件,如:index.phtml。這裏的文件名字爲咱們控制器的一個方法,在後面的實戰中我會詳細說明。數據庫
這個主要是用於存放咱們的一些本地類庫的文件夾。後面咱們會使用到它,使用的時候咱們再詳細說明。
這個是插件目錄,用來存放一些插件。如:PDF文檔的生成插件、phpmailer郵件的發送等。好了,這一篇咱們詳細的說明了框架的目錄結構,那麼下一篇咱們就開始建立第一個控制器,讓它輸出「hello,world!」