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 關鍵字定義
實例化
不能直接實例化
不能直接實例化
繼承
類別只能繼承一個
類別可以實現多個
...
唐鳳也說讚的工具,番茄鐘工作法
說到番茄鐘,很多人可能沒有聽過這個東西,番茄時鐘? 食物嗎? 可以吃嗎? 大家第一個聽到的反應可能會是這樣,但是它當然不是,那它到底是什麼呢?
番茄鐘是什麼?最簡單的說明就是,把將要做的任務進行切割,分成數個片段,並在每個片段穿插短暫休息,而達到提升工作效率方法。
當我們要專注的時候需要消耗大腦的”專注力”,而專注力會隨著時間逐漸下降,導致注意力渙散,無法持續專注。因此番茄鐘使用了每工作二十五分鐘休息五分鐘的循環(我們常說一個循環為一個番茄),讓我們專注二十五分鐘開始分心時,休息5分鐘讓專注力恢復,使工作保持專注狀態。
番茄鐘聽起來很單純,它真的那麼厲害嗎?先說結論,它有非常多的細節需要注意,才能讓使用番茄鐘達成自己所期望的成果,以下列出幾點使用說明和注意事項供大家參考 :
思考要做的任務是否會需要番茄鐘首先這件事非常的重要,先想想這件任務是否會讓你時常分心,如果會,而這個分心是自己的專注力不夠的原因,那恭喜你可以開始使用番茄鐘了。但是如果是其他外在原因,像是環境、人、3C產品等等原因,那就要先考慮排除以上原因,若是無法排除,那就要思考如何用其他方法改善。
別急著開始,先”擬定計畫 ...
我是如何用一年半自學成為後端工程師
你好 ! 很高興你點進這篇文章參與我的故事,謝謝你 !
首先當然先要恭喜自己成為一個小小的部落客 ! \(^0^) / ,既然開始了就要做到最好 ! 所以目標當然是成為有品牌的部落客XD,好啦 ! 話不多說我們開始吧 !
開始寫程式了,那要走前端還是後端 ?講到這個話題就要從我大學四年級時開始說起,當初對自己興趣迷茫的我因緣際會下開始對網頁程式有興趣,因此我得知了原來網頁有分”前端”與”後端”兩種領域,我也了解到,前端主要的工作為切版,那切版可能會比較需要一點”設計”的底子,後端大多為邏輯思考和數理運算,所以身為機械系的我,果斷選擇了”後端”。
那要選甚麼語言呢 ?起初我只知道自己想要學網頁後端,但是卻不清楚自己要學甚麼,光是後端就有很多主流語言 PHP, Node.js, ASP.NET, Java 等等的語言,那要選甚麼呢 ? 因為個人沒有甚麼資源和經驗,因此最後以”市佔率最高”的 PHP 下手。
選擇好語言了,那要怎麼學 ?起初開始學習時,我買了不少的書作為開端,邊看書邊照書上練習,但是不久後我就開始偷懶了,因為我自己是個比較會受環境影響的人,所以只要在自己房間就會常常 ...