因為Laravel 4.2預設沒有安裝PHPUnit
與Mockery
,所以想自己用composer require
安裝,但沒想到卻安裝到正在開發中的PHPUnit 6.0
。重點是PHPUnit 6.0只支援PHP 7
,因為Homestead 0.2.7裝的是PHP 5.6.10
,而導致PHPUnit安裝失敗,而這一切的原因竟然因為是…
點燈坊
假如你對 PHP 的印象還停留在 PHP 與 HTML 夾雜、沒有 OOP、沒有 package、沒有 MVC、沒有 framework、沒有測試的寫法,那你應該來學學 Laravel,它是一個使用 PHP 最新 OOP 語法、以 Composer 管理套件、MVC 架構、融合 RoR 與 ASP.NET MVC 風格、支援單元測試的 framework,可以說與傳統 PHP 的寫法完全不同,是一個更優雅且生產力更高的全新 PHP。
Chrome/FireFox都會自帶一些debug工具可以幫助我們debug前端資訊,如CSS、JavaScript…等,但若要debug後端的Laravel資訊呢?如有了ORM之後雖然方便,但我們可能對其產生的SQL有所疑慮,想深入了解其所產生的SQL是否符合我們的需求,這些在Barry vd. Heuvel的Laravel Debugbar都可以滿足我們。
PHP 的 closure 除了 __invoke()
外,事實上還有一個 bindTo()
,在Laravel台灣的Modern PHP讀書會 Chap.2 Feature時,曾經討論過closure,但總抓不到感覺,本文以JavaScript的觀點重新理解PHP的bindTo()
,並比較兩種語言的用法與設計理念,讓bindTo()
不再遙不可及,可以真正應用在我們的專案裡。
相較於其他Web後端技術,PHP的一大特色是有眾多framework支援,有macro framework如Symfony與Laravel,也有micro framework如Silex與Slim,更有較早期的CodeIgniter。
PHP的各framework蓬勃發展是一種良性競爭,但也導致各framework一直在重新製造輪子。若能讓PHP的framework各展所長,彼此互相合作,就必須大家遵守一個共同的標準,這就是PHP-FIG
的PSR
。
理論上PHP與C#完全沒有關係,因為兩者都是後端開發語言,但因為Laravel台灣社團要一起參加陳仕傑老師的自動測試與TDD實務開發(使用C#)課程,而上課用的是C#,為了讓原本寫PHP的社友能快速看懂C#範例,進而將TDD用在PHP上,因此有了本文介紹。
本文僅就物件導向與常用的部分快速導覽,並不包含PHP與C#語言部分的全部,目的只讓PHP開發者能快速看懂C#學習TDD。
在 PHP 4 最早稱 callback
,PHP 5.3 引入 closure
與 anonymous function
,PHP 5.4 則新增 callable
type hint。
所以在 PHP 中,callback
、closure
、anonymous function
,與 callable
,事實上指的是同一件事情,但因為底層用的都是 Closure
物件,通常統稱為 closure。
在物件導向時代,我們會使用foreach
的方式遍訪每一個物件,傳統上我們會採用Iterator Pattern
,去實作Iterator
interface,簡單地說,generator就是更簡單的iterator。
Generator讓你不須實踐Iterator
interface,也不須將資料放在記憶體中,直到foreach
要取值時,才及時產生資料使用yield
傳回。
OS X內建的Terminal雖然可用,但對於整天以指令
為生的程式設計師來說,功能實在太過陽春。
iTerm2是OS X上加強版的Terminal,搭配on-my-zsh shell與Powerline主題之後,將可打造一個全功能的Terminal,支援多tab、ls檔案目錄顏色、git狀態、Laravel artisan指令補全…等。