Faker(3)--Base 類別中的基本方法
昨天有提到 Generator 有 addProvider() 方法,可以把各式各樣的 Provider 加入 Generator。而也有提到 Generator 的屬性或方法,會轉接到 Provider 提供的方法。
雖然沒有硬性規定,不過它的 Provider 都有繼承自 Provider\Base 的基礎類別,這個類別定義了很多產生假資料的基本方法,讓我們一起來看看。
Random
基本隨機取樣的方法
Random
如果要產生假資料的話,亂數產生器是必要的。
導入 Composer
Composer 是目前 PHP 界裡廣泛使用的套件管理工具,用 Composer 的自動載入也會比較容易跟 Laravel 串接。我們今天就來導入 Composer 吧!
Commands and Flags
在開始正式寫假文產生器前,我們先來看看哪些子命令和參數是需要定義的。
Faker(2)--Factory 與 Generator
Faker 套件使用方法非常單純--使用工廠(Factory)建構產生器(Generator),然後把產生器拿來用就對了。
如果有認真翻原始碼的話,會發現它是有經過設計的。內部元件間是鬆耦合狀態,這也表示我們也是能夠簡單地客製化自己的產生器的。
以下會以類別名討論,為節省版面空間,將會把 Faker 命名空間省略。
負責生產線的 Factory
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
Generator 的 doc block 定義了很多屬性和方法,但會發現裡面完全沒有實作,也就是全靠 __get() 與 __call() 達成目的。
來試著升級 PHP 吧
我們接下來會使用 PHPConf 2016 的簡報「使用 Slim 為 Legacy Code 重構」提到的 proxy pattern 方法來重構。而中間的 Route 會使用 Laravel。只是在使用 Laravel 之前,我們得先要升級 PHP。
Dep
學一個程式語言,最快的學法就是直接從實作中學。從今天開始要進入應用程式實作階段了!
Faker(1)--假文產生器
在開發階段時,取名是讓開發者覺得非常困擾的任務之一。
當然,變數或函式命名必須得好好想想,不然容易造成別人看不懂的技術債。但有一種很想亂打就好,但系統會要求你不能亂打的--測試資料。
比方說,前兩天上測試環境要註冊帳號看到:
重構的第一步--讓程式可以動
不管程式再怎麼爛,因為之前專題有過關,至少可以它「曾經」跑得起來吧?
Carbon(4)--擴充繼承類別的範例
今天來繼續看 Carbon 還有擴充哪些功能
COMPARISONS
Carbon 提供許多比較的方法,讓我們在判斷時間會方便很多。
eq() lt() gt() …
這些方法相信許多開發者都有看過。即使沒看過,每一個方法也都有相對應的別名可以參考使用。
between() min() max()
這些方法是基於上面的基本比較方法實作出來的。
closest() farthest()
這兩個方法是基於 DIFFERENCES 功能實作的。
isPast() isFuture() is*() …
這些方法因為非常語言化,所以用起來很方便。會這樣設計,是因為我們在平常用詞時,會不自覺使用這些字眼:「這日期過去了嗎?」「這日期是未來嗎?」「這日期是今天嗎?」等等。
而且都可以跟昨天提到的建構方法直接串接: