整合 Laravel
昨天導入 Composer 主要是為了今天要整合 Laravel 前的準備。
昨天導入 Composer 主要是為了今天要整合 Laravel 前的準備。
昨天有提到 Generator 有 addProvider() 方法,可以把各式各樣的 Provider 加入 Generator。而也有提到 Generator 的屬性或方法,會轉接到 Provider 提供的方法。
雖然沒有硬性規定,不過它的 Provider 都有繼承自 Provider\Base 的基礎類別,這個類別定義了很多產生假資料的基本方法,讓我們一起來看看。
基本隨機取樣的方法
如果要產生假資料的話,亂數產生器是必要的。
Composer 是目前 PHP 界裡廣泛使用的套件管理工具,用 Composer 的自動載入也會比較容易跟 Laravel 串接。我們今天就來導入 Composer 吧!
在開始正式寫假文產生器前,我們先來看看哪些子命令和參數是需要定義的。
Faker 套件使用方法非常單純--使用工廠(Factory)建構產生器(Generator),然後把產生器拿來用就對了。
如果有認真翻原始碼的話,會發現它是有經過設計的。內部元件間是鬆耦合狀態,這也表示我們也是能夠簡單地客製化自己的產生器的。
以下會以類別名討論,為節省版面空間,將會把 Faker 命名空間省略。
Factory 是標準的 Simple Factory Pattern 實作,它使用靜態方法 create() 取得固定一種類型的物件--Generator。類別圖如下:
classDiagram
class Client
class Factory
class Generator
Client -- Factory
Client --> Generator : use
Factory --> Generator : create
Generator 是需要經過組裝的,因客戶要求的 $locale 不同,而會有不同的組裝內容。跟現實生活的生產線一樣,組裝 Generator 的任務是交由 Factory 負責的。
Client,也就是使用 Faker 套件的客戶端,只要使用 Factory::create() 就能保證一定會拿到 Generator。如果物件組裝過程有問題的話,則會丟例外。
Generator 的 doc block 定義了很多屬性和方法,但會發現裡面完全沒有實作,也就是全靠 __get() 與 __call() 達成目的。
我們接下來會使用 PHPConf 2016 的簡報「使用 Slim 為 Legacy Code 重構」提到的 proxy pattern 方法來重構。而中間的 Route 會使用 Laravel。只是在使用 Laravel 之前,我們得先要升級 PHP。
學一個程式語言,最快的學法就是直接從實作中學。從今天開始要進入應用程式實作階段了!