Laravel Blade Component 簡單介紹
前言關於 Laravel Blade Component 的介紹,官方文件寫得很清楚,這邊簡單的介紹常見用法,並且提供一些實際的使用案例。
簡介Laravel Blade Component 是在 Laravel 7.0 版本中新增的功能,主要是用來取代原本的 Blade include,讓我們可以更方便的將重複的 HTML 結構抽出來,並且可以透過 Blade Component 的方式來使用,以下分別介紹兩種元件元件與匿名元件。
元件標準的元件形式,相較匿名元件複雜一點,但是可以更好的管理元件的參數與HTML結構。
建立元件1php artisan make:component Input
建立元件後,會在 app/View/Components 中建立一個 Input.php,並且在 resources/views/components 中建立一個 input.blade.php。接著我們就可以在 Input.php 中定義元件的參數,並且在 input.blade.php 中定義元件的 HTML 結構。
12345678910111213141516171819202122/ ...
Laravel Blade用法筆記
Blade簡單介紹在Laravel中,Blade是一個模板引擎,可以用來將PHP原始碼和HTML混合在一起,並且可以使用一些簡單的語法來處理資料,讓程式碼更加簡潔。
Blade基本語法
{{ }}用於輸出變數,例如{{ $title }},此用法會自動把輸出的內容做HTML轉義,例如{{ $title }}輸出<h1>title</h1>會變成<h1>title</h1>
{!! !!}而這語法不會做其他動作,直接輸出原始值,例如{!! $title !!}
@php用於寫原生PHP,例如@php echo $title; @endphp,也可以使用@php($title)來簡化
@if、@elseif、@else、@endif用於處理if的情況,用法如下:1234567@if (count($records) === 1) I have o ...
Laravel Validator介紹與用法
Validator簡單介紹在Laravel中,Validator是一個驗證器,可以用來驗證使用者輸入的資料是否符合規定。在認識這個之前,很常需要針對請求過來的各欄位資料特別處理,導致專案變大時,重複的驗證方法四散各地,難以維護。而Validator就是為了解決這個問題而生的,它可以將驗證的規則寫在一個地方,並且可以重複使用,讓程式碼更加簡潔。
Validator基本上有分兩種驗證:以下兩種功能基本上相同,只是第一種自動幫你做了不少事情;第二種則是完全客製化,可以自己定義錯誤行為,但是要自己處理跳轉、錯誤訊息等等。
Request物件中的驗證:
可以直接從request物件中使用驗證方法,並且會自動把request資料帶入驗證,其中第一個參數可以填入各欄位的驗證規則,第二個參數可以填入自訂錯誤訊息,範例如下:123456789101112131415use Illuminate\Http\Request;// rqeuest物件中的validate方法function index(Request $request){ $validated = $request->v ...
Laravel ORM用法筆記
ORM簡單介紹在Laravel中,ORM的主要工具是Eloquent。Eloquent提供了一種直覺式的方法來操作資料庫,讓資料表和模型之間建立了一對一或一對多的映射關係。以下是一些ORM操作的基本用法。
ORM資料種類
Laravel撈資料幾種類型:
ORM:Eloquent 模型,可以$data->$field和$data[$field],有getter,setter
QueryBuilder:關連數組(ArrayAccess),只能$data->$field,也有getter,setter(僅限一維以下才有,因為是stdClass)
Laravel兩種常用特別的資料格式:
Collection: Laravel內建物件,有很多內建用法,但是存取資料基本上以陣列索引訪問為主 12$a = ['a' => 123];$a = collect($a);
StdClass: PHP原生的物件,簡單來說就是讓資料可以對象屬性訪問 12$a = ['a' => 123];$a = (object) ($a); ...
物件導向必備知識-SOLID
當我們開始設計和撰寫程式碼時,我們經常遇到的挑戰之一是如何創建易於維護和擴展的程式碼。為了解決這些問題,軟體工程師們引入了SOLID原則,這是一組五個基本原則,用於指導物件導向設計。在這篇部落格中,我們將深入探討每個原則,提供錯誤和正確的程式碼示例,以及相關的解釋。
單一職責原則 (Single Responsibility Principle, SRP)原則: 一個類別應該只有一個單一的職責。
錯誤範例:
123456789class User { public function createUser($userData) { // 創建新使用者 } public function sendEmail($userEmail, $message) { // 發送郵件 }}
在上面的錯誤範例中,User 類別負責創建使用者和發送郵件,這違反了單一職責原則。
正確範例:
1234567891011class User { public function creat ...
依賴注入(Dependency Injection)優缺點
在實際開發中,只要內容開始複雜,使用到的類別越來越多,就會慢慢發現,為什麼我只是要抽換或更改其中的類別,卻會限制這麼多以及需要大量改動。這時我才注意到這個主題的重要性,但是在了解依賴注入之前讓我們先談談甚麼是控制反轉(IoC)。
控制反轉控制反轉(Inversion of Control,簡稱 IoC),它指的是將應用程式的控制權轉移到外部元件或框架,以實現更大程度的可配置性和可擴展性。IoC強調的是將依賴管理的責任從應用程式內部移出,通常透過依賴注入來實現。IoC有助於改善軟體架構,降低耦合性,提高可測試性,並使系統更容易配置和調整。
依賴注入依賴注入(Dependency Injection,簡稱 DI)是一種軟體設計模式,主要用途於解決程式碼中的相依性問題。在傳統的程式設計中,一個類通常負責創建和管理其所需的相依物件。然而,這種方式容易導致高耦合的程式碼,難以測試和維護。
從以上兩點說明可以知道,控制反轉是一種解除依賴降低於耦合性的概念,至於依賴注入則是實現該概念其中一種方法。
範例說明有一個紀錄Log的服務,以下為具體實現服務的類別FileLogger和DatabaseLog ...
抽象(abstract)與介面(interface)差異
前言為了讓自己更能理解各種觀念,因此寫文章來讓自己加深印象,並使用PHP來說明範例。
抽象簡單來說就是嚴格版的父類別,因為父類別有的功能他幾乎都有,但是有以下四點差異:
不可實例化
使用abstract關鍵字定義類別
可以加入抽象方法,並且子類別必須實作,否則子類別會被標記為抽象類別
抽象方法可以只定義方法的簽名,也就是方法的名稱與參數,或是也可以定義具體方法
介面簡單來說就是閹割版抽象類別,並且更加嚴格,因為功能少了很多,使用上多了不少的限制,如以下幾點:
不可加入具體方法與屬性,方法只能定義簽名,但是可以使用常數
不可有建構函式
不可有public以外的定義方式
子類別不可隨意實作方法,必須全部實作
但是介面也多了一點只有它才有的功能,可支援多重繼承,也就是子類別可同時實現多個介面。至於兩者的詳細差異請參考以下表格:
兩者差異
差異點
抽象(Abstract)
介面(Interface)
定義
使用 abstract 關鍵字定義
使用 interface 關鍵字定義
實例化
不能直接實例化
不能直接實例化
繼承
類別只能繼承一個
類別可以實現多個
...
《原子習慣》個人極力推薦的勵志書,不只勵志更是工具書
買了這本書到現在,至少讀過3次,書中充滿各種標籤與筆記,時不時會回來翻閱來提醒自己,對這本書有很深的感情,因此想把這本書分享大家,就讓我簡單的介紹一下這本葵花寶典,以及我自己認為相當重要的幾個重點與自己的心得吧 !
什麼是”原子”習慣?相信很多人看到書名後一頭霧水,原子是啥 ? 國中化學好像有學到…阿忘了拉 ! 之類的反應XD。
其實”原子”就是非常細小、細微的意思,從化學角度來說的話它是細胞中最小的單位。也就是說原子習慣的意思是”細微的”習慣,那為什麼作者要以這個名字為書名呢 ?
書中不斷強調每一個微小改變都會造就龐大的改變,所謂複利的力量不可小看,開頭便提到「每天進步1%,持續一年你能獲得37倍成長;每天退步1%,持續一年你會弱化,甚至倒退到零;你的一點小改變、一個好習慣,都會產生驚人的加乘效應」,就像投資一樣,短時間因為成長幅度甚小沒有實感,但經過時間不短累積加成,成果便會有超越自己所想像的成果。
那要如何養成好習慣呢? 只要四個簡單法則相信很多人都有過這樣的經驗,終於下定決心並且也做了計劃要養成好習慣,但是堅持了一週就默默移出了記憶,養成好習慣真的好難QQ。這本書就以大家常常會 ...
如何使用PDO連線資料庫
這周因為工作比較忙,就來分享個人常使用的PDO連線範例吧!
這邊分享兩種寫法,一種是單純PDO,一種是有使用Class的PDO分享給大家,那我們下篇文章見 !
普通寫法 :
1234567891011121314151617<?php$hostname = '127.0.0.1';$username = 'root';$password = '';$db_name = 'test';$dsn = "mysql:host=$hostname;port=3306;dbname=$db_name;charset=utf8";try { $conn = new PDO($dsn, $username, $password); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); echo 'success';} ca ...
網頁會員系統是什麼 ? Session和Cookie又是什麼 ?
前言為了讓自己更能理解各種觀念,因此寫文章來讓自己加深印象,並使用PHP來說明範例。
抽象簡單來說就是嚴格版的父類別,因為父類別有的功能他幾乎都有,但是有以下四點差異:
不可實例化
使用abstract關鍵字定義類別
可以加入抽象方法,並且子類別必須實作,否則子類別會被標記為抽象類別
抽象方法可以只定義方法的簽名,也就是方法的名稱與參數,或是也可以定義具體方法
介面簡單來說就是閹割版抽象類別,並且更加嚴格,因為功能少了很多,使用上多了不少的限制,如以下幾點:
不可加入具體方法與屬性,方法只能定義簽名,但是可以使用常數
不可有建構函式
不可有public以外的定義方式
子類別不可隨意實作方法,必須全部實作
但是介面也多了一點只有它才有的功能,可支援多重繼承,也就是子類別可同時實現多個介面。至於兩者的詳細差異請參考以下表格:
兩者差異
差異點
抽象(Abstract)
介面(Interface)
定義
使用 abstract 關鍵字定義
使用 interface 關鍵字定義
實例化
不能直接實例化
不能直接實例化
繼承
類別只能繼承一個
類別可以實現多個
...