從放棄到入門-Yaf(細說目錄)

Perma發表於2017-11-09

在上一個文章中我們說了它的基本的一些結構,以及我們通過修改入口檔案把它移入到public資料夾下面。那麼今天我們來一起研究一下它的詳細的目錄結構,以及完善一下public資料夾裡面的內容。
今天主要是兩大塊,第一塊是完善public資料夾,第二塊是目錄結構的詳細解讀。

完善public資料夾

我們已經把index.php檔案成功移植到來我們的public資料夾下面了,那麼現在我們在這個資料夾下面建立幾個資料夾用來存放我們專案中所需要的一些靜態檔案。比如:圖片、css樣式、javascript等。按照鳥哥在文件中所說的,我們可以建立以下這幾個資料夾,它們分別是:
css : 用來儲存一些我們專案中所需要的樣式檔案。
img : 用來儲存我們專案中的一些圖片資源,比如logo、背景圖什麼的。
js : 用來儲存一些我們專案中的js程式碼塊或者第三方庫,如:jquery、vuejs等。
那麼我們現在就先建立一下它們把,為我們接下來的專案做準備:


以下就是我們的目錄結構,好了現在建立好了,我們接下來看看其他目錄裡面是什麼樣子的!

conf資料夾

這個資料夾用於存放我們框架的配置檔案,預設配置檔案:application.ini。配置項可以參考鳥哥手冊:www.laruence.com/manual/yaf.…

application資料夾

這個資料夾的話是我們框架中的核心,裡面包含了我們這個框架的整體架構等內容。
裡面有5個資料夾以及一個.php檔案,那我們現在一個一個說起吧!

Bootstrap.php

大家看到這個別把它誤認為是前端框架的那個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,我們現在來試著自己定義一個方法看看:

public function _initPdobase(Yaf_Dispatcher $dispatcher) {
    var_dump('hello,pdo!');
    exit;
}複製程式碼

在這裡我自定義了一個Pdobase的方法,輸出了一段“hello,pdo!”,這時候會輸出hello,pdo!此刻說明了它被載入了:


在這裡我們還可以進行外掛的註冊,路由的定義以及自定義等,是不是非常好用呢,接下來我們看看controllers資料夾

controllers資料夾

大家都比較熟悉現在比較流行的web架構:MVC三層架構,那麼這個controllers資料夾中存放的也就是我們的 C ,也就是控制器,通過自定義控制器如:Index.php 就可以進行接收客戶端請求,呼叫資料模型,基本邏輯處理,以及呼叫檢視,最終完成客戶的請求。它接收請求並決定呼叫哪個模型去處理請求,然後再確定用哪個檢視來顯示返回的資料。

models資料夾

上面說到了MVC中的 C ,那麼我們現在就來看看models資料夾是做什麼的,它是存放我們的 M 。
“模型表示企業資料和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。例如它可能用像EJBs和ColdFusion Components這樣的構件物件來處理資料庫,被模型返回的資料是中立的,就是說模型與資料格式無關,這樣一個模型能為多個檢視提供資料,由於應用於模型的程式碼只需寫一次就可以被多個檢視重用,所以減少了程式碼的重複性。——百度百科”

views資料夾

這個資料夾我們看名字也知道,他是用來存放我們的檢視檔案,這裡面和其他兩個資料夾不同的是,還需要在它裡面建立一個資料夾,而這個資料夾的名字要與控制器的名稱一致,如我們有個:Index.php控制器,那麼在views下面我們就要建立一個index資料夾,在這個資料夾裡面我們來建立模板檔案,如:index.phtml。這裡的檔名字為我們控制器的一個方法,在後面的實戰中我會詳細說明。

library資料夾

這個主要是用於存放我們的一些本地類庫的資料夾。後面我們會使用到它,使用的時候我們再詳細說明。

plugins資料夾

這個是外掛目錄,用來存放一些外掛。如:PDF文件的生成外掛、phpmailer郵件的傳送等。
好了,這一篇我們詳細的說明了框架的目錄結構,那麼下一篇我們就開始建立第一個控制器,讓它輸出“hello,world!”

相關文章