Laravel: 遺珠之憾

剩下最後的三天鐵人賽,其實原本我有點想繼續寫下去的…但說真的有點有氣無力,如果你發現我最近這幾天的文章風格與教學,就可以發現我其實有點虎頭蛇尾了哈哈。 所以最後這三天將進入第三階段新的章節,也就是主要會再討論關於 Laravel 的套件、以及大架構、還有 Best Practice 等等的內容,雖然技術含量不高,但也就是我基於我所有的 Laravel 經驗全力輸出了! 不過我個人是還蠻喜歡看書的,在資訊界的領域當中,歐萊禮是很多人常常入門的資訊書出版社。所以這裡,我要學習歐萊禮的寫作風格,寫寫一些遺珠之憾,好讓大家不至於感覺有點一半跑掉,而是後續還能有些內容學習和追蹤。 Notifications Laravel …

Laravel Collections

接下來,我想要分享關於Laravel 的一個比較特別的類別:Collections 他有點像是陣列的概念,但更像是一個集合的概念。 相信如果你還記得前面教學談到幾行的程式碼,裡面不是有Article::all和$article->tags這幾段嗎?如果你去dd()它,你會發現他們都是同一種類別:Illuminate\Database\Eloquent\Collection 當然,如果你有在之前helper的章節發現到collect()這個方法,他其實回傳的也是Collection,但是他是Illuminate\Support\Collection 兩者在使用上會有一些差異,基本上他們也是大部分使用上也蠻像的,所以我就在這裡把他 …

Laravel 多語系網站

接著前一天的Helper主題,我們那時談到了trans()這個helper,底下應該會常常在使用它,我們有時候會需要有國際化的需求,需要征服宇宙,所以做一個多語系的網站是有必要的。接下來,讓我們來示範一下Laravel這個全能型框架關於多語系能力的展現吧! 網頁要實現所謂的多語系有兩種方法 建立多個網站(土法煉鋼型):例如我需要有英文和中文的網站,就會英文有一個網站,中文又會有另外一個網站。這兩個網站的樣子可能會有很大的不一樣或者很大的一模一樣,好處是:可以就語系別做出更高的客製化,然後壞處就是:費工,重複造的輪子肯定很多 使用語系檔將檔案內容作出轉換:以上面的例子來說,可能我會有一個中文的語系檔和另外一個英文的語系檔,根據 …

Laravel Helpers

寫到這裡,終於剩下最後的5天就可以完成這整個鐵人賽!(撒花 接下來希望自己再接再厲。繼續完成後續幾天的Laravel 教學系列。 今天也是個簡單風(好幾天都是簡單風了QQ) 介紹一下Laravel作為一個全能型的框架,還提供了一些稱為「Helper」的東西幫助我們可以整理程式碼、封裝了一些我們常常會弄到的部分,也可以稱之為「語法糖」,總之幫助我們可以避免「重複造輪子」。而順道一提的是:我們之前也早已用過這些東西了:例如route()、view()或者factory() 如果你看到文件:https://laravel.com/docs/master/helpers 其實大概這些語法可以分類為以下幾種: 陣列及物件類:可以處理陣列與 …

Laravel Pagination

沒想到寫這麼多天以來,我居然漏掉一個這麼重要的環節:「分頁」。在網頁的世界中,讓資料作出排序及分頁絕對是必要做到的一件事情,Laravel作為一個全能框架,這項功能肯定是有放在裡面的。讓我們以文章列表作為範例,其實就是將原本的Article::all()改為Article::paginate(5)就好囉,至於那個5看你想換哪個數字都可以,那個意思是你要幾個項目為一頁。 然而我知道,你會想問如果底下沒有一個可以點連結的頁數頁尾那怎麼行,超簡單,在article/index.blade.php這個檔案下面放至一行程式碼 1{{ $articles->links() }} 這樣你就看到囉 這樣這個分頁是不是很簡單?當然,如果你想要客 …

Laravel Task Scheduling

接下來我想要分享一些關於 CronJob 的一些事情,有時候,我們會有一些日常的工作需要在每天某一個時間固定執行,像是網頁世界最常見的就是發電子報,這只是最常見的例子,當然還有其他類似的例子,例如會員卡收費、清Log之類的,我們可以透過 Laravel 的 Task Scheduling 來做這些事情,管你想新增多少項、要做什麼,只要能用程式寫得出來,都可以來做喔! 還記得我們前幾天談到的Laravel Artisan 以及 Command 嗎?當然,寫 Task Schedule 可以有很多種不同的方式,但我個人建議是使用先建立 Command 的方式可以讓我們比較好的管理程式碼。當然,其他方法我也會分享的喔~ 把 Laravel …

Laravel File Storage

接下來我分享關於Laravel內建關於檔案管理的部分,先上個文件:https://laravel.com/docs/6.x/filesystem Laravel 的檔案除了傳統上的可以存在本機(Server)上,也可以存在AWS S3和ftp/sftp喔,也可以配合一些大大寫好的套件存在GCP或者其他儲存的載體中。 這裡就簡單說明一下: 如果你要提取檔案 1$contents = Storage::get('file.jpg'); 如果你想要從AWS S3取得檔案的話,在中間加入一個disk即可 1$contents = …

Laravel Testing

接下來我決定我要分享的部分就是關於測試的部分,我指的可不是我們在前端頁面點一點、拉一拉的肉眼測試喔,而是利用程式測試程式。在 php 有一個很有名的工具:PHPUnit,這麼湊巧的是,Laravel 也結合了這個部分,很巧妙的讓我們也能夠輕鬆的使用 phpunit,搭上 TDD 的方法,讓我們更能夠寫出優秀、強韌的程式來。 資料夾 首先讓我們看到在 Laravel 專案底下,有一個tests的資料夾,賓果!那就是我們測試所放的部分,Feature是放置比較針對功能面,需求面功能的測試類別,而Unit則是放置關於檔案,像是 Model、Services 等等的測試類別,別急,接下來我會舉一些例子讓你們更加清楚一些。 如何執行 1$ …

Laravel Eloquent ORM-(下)

終於來到這個第 20 天了,今天我們繼續談談 Eloquent ORM 的部分,Laravel 為 Eloquent 提供一個很棒的東西,那就是relationship,有點像是我們資料庫裡面的「外來鍵」,透過使用relationship,我們可以更加輕巧的使用 ORM 呢! Laravel 寫了一個很詳盡的文件:https://laravel.com/docs/6.x/eloquent-relationships 提供我們以下這些類型的「relationship」 一對一 一對多 多對多 多對一 has-one-through Has Many Through 這裡我以一對多的關係作為情境的例子。沿著之前的簡單部落格專案的例 …

Laravel Eloquent ORM-(上)

接下來我們介紹 Laravel 的 ORM:Eloquent,ORM 就是使用物件導向的方式去操作資料庫。這對負責程式開發的工程師有一個很不錯的好處:不用處理「純 SQL 語法」,當然,不使用「純 SQL」的效能會略比使用 Eloquent 還要差一點,然而,這是可以讓我們有比較易讀的程式碼以及較好的維護性。 簡單來說Eloquent他就是 Laravel 內部的類別。其實我們繼承他就可以讓我們做使用了,例如之前練習的 Article.php 1use Illuminate\Database\Eloquent\Model; 2 3class Article extends Model 4{ 5 // 6} 為了接下來我們可以來做一些 …