PHP系列 - 2: 屬性、方法與魔術方法

閱讀時間約 5 分鐘

這次的單元我來稍微介紹一下 PHP 裡面常看到的一些屬性與方法。

訪問修飾符 access modifiers

訪問修飾符用於控制類屬性和方法的可見性。在 PHP 中,除了預設的 default,還有三種修飾符:publicprivateprotected

  1. public:訪問權限最寬鬆,可以在類內部、類外部以及繼承的子類中訪問。
  2. private:訪問權限最嚴格,只能在類內部訪問。用於封裝數據,保護類內部的實現。
  3. protect:訪問權限介於中間,類內部和繼承的子類中都可以訪問,但在類外部無法訪問。

方法修飾符

方法修飾符總共有三種,分別為 staticfinalabstract

  1. static:靜態資源,在類別加載時就分配空間,所有實例共用一份。使用靜態方法時,只需透過 類名::屬性類名::方法名() 來調用。
    • 靜態屬性:表示此屬性屬於類別本身。
    • 靜態方法:表示此方法屬於類別本身,而非類別的實例,因此只能訪問類別的靜態方法。
  2. final:最終資源,表示該方法無法被改寫或繼承,常用於防止子類修改其行為。
  3. abstract:抽象資源,表示該類別無法被實例化。通常用於定義必須的屬性和方法,以限制子類必須實現這些屬性和方法。後續章節會詳細介紹。

readonly

readonly 是從 PHP 8.1 開始新增的屬性修飾符,用於使屬性無法被修改,但仍然可以被訪問。這個修飾符的主要用途是確保屬性在創建後不會被更改,讓使用者可以放心引用,而不必擔心該值在其他地方被調整。

魔術方法

PHP 提供了多種魔術方法,這些方法通常以 __ 開頭。以下是幾種常用的魔術方法介紹:

__construct()

當創建目標物件時,可以使用構造函數來定義一些初始化的內容,確保在物件構建時同時完成初始化。

__get()、__set()、__isset()

這三個方法分別用於獲取、設置和確認屬性是否已被設置的功能。

__call()

此方法主要用於檢查被呼叫的方法是否存在於該類別中。

__invoke()

這個魔術方法的使用頻率較高,但對初學者來說可能較難理解。簡單來說,__invoke() 可以讓物件被視作函數來使用。一般情況下,當我們實例化一個類別為物件時,只能呼叫該類別本身所包含的函數,而 __invoke() 則允許我們直接將這個類別作為函數使用。你可以參考這篇文章中的舉例:PHP 魔術方法|三分鐘看懂 __invoke 用法。在實作中,尤其是在 MVC 架構中,Controller 通常負責一件特定的事情,並使用 __invoke() 來實現 RESTful API 架構。


對於初學者來說,魔術方法可能是最難掌握的概念之一。由於魔術方法不具備一般函數的名稱,因此在未經過專門學習的情況下,直接在程式碼中看到這些方法時,想要使用 IDE 的 declaration 功能查詢內容往往會失敗(這取決於 IDE 的功能強弱)。因此,每次遇到魔術方法時,都可以視作一次學習經驗。

參考資料:

  1. https://www.cnblogs.com/SharkJiao/p/14117095.html
  2. https://www.ithome.com.tw/news/148077
  3. https://php.watch/versions/8.1/readonly
  4. https://www.cnblogs.com/ttaylor/p/15269534.html
  5. https://laravel.com/docs/9.x/controllers#single-action-controllers
  6. https://driesvints.com/blog/the-beauty-of-single-action-controllers/
  7. https://devindeving.blogspot.com/2021/12/php-magic-method-invoke.html
avatar-img
2會員
25內容數
test
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
林柏宇的沙龍 的其他內容
本文將介紹一些在 PHP 開發過程中實用的工具和技巧,涵蓋 PHP 分析器 xhprof、PHP 沙盒、PHP_CodeSniffer、PHPDoc 註解及靜態分析工具 PHPStan 等。這些工具能夠幫助開發者提高效率、減少錯誤,並改善程式碼的可讀性。
在軟體開發中,客戶經常會遇到無法訪問公司網頁的問題,但這類問題常常難以從日誌中查找解決方案。本文探討了有效的解決方式,特別是利用HTTP Archive(HAR)檔案來分析問題根本,幫助客戶瞭解問題的來源,包括使用有用的工具來進行資訊解析。透過案例與經驗分享,讓讀者能更有效地應對類似挑戰。
在這篇文章中,我們將探討常見的下載中斷問題,尤其針對高畫質影片或大檔案的傳輸困難。通過問題描述與解析,我們發現影響下載成功的因素,並提出利用 byte-range 技術進行分段傳輸的解決方案。此外,也會說明調整 header 的重要性,幫助開發者有效改善用戶下載體驗。
在軟體工程中,文件管理常被忽視,但對於多方協作至關重要。本文深入探討API文件、YAML格式和UML圖的應用,強調保持文件的版本控制,使用Swagger和Markdown工具提升可讀性與協作效率。此外,我們將討論如何利用PlantUML輕鬆繪製UML圖,以促進開發團隊之間的有效溝通與理解。
本文介紹了代理伺服器的重要性及其主要功能,包括請求轉發、響應回傳、隱私保護、內容過濾等。此外,本文還探討了各類型的代理伺服器,如正向代理、反向代理、透明代理和高匿名代理,以及它們在網路架構中的角色。瞭解這些概念不僅能增進對網路安全的認識,還能在選擇合適的解決方案時提供幫助。
在資料分析中,資料處理和可視化是不可或缺的兩項重要任務。本文介紹了 ELK 系統(包括 Elasticsearch、Logstash 和 Kibana)以及 Grafana 的核心功能及其在日誌管理和資料分析中的作用,幫助讀者理解這些工具如何提升資料處理效率和可視化效果,從而更好地應用於真實場景中。
本文將介紹一些在 PHP 開發過程中實用的工具和技巧,涵蓋 PHP 分析器 xhprof、PHP 沙盒、PHP_CodeSniffer、PHPDoc 註解及靜態分析工具 PHPStan 等。這些工具能夠幫助開發者提高效率、減少錯誤,並改善程式碼的可讀性。
在軟體開發中,客戶經常會遇到無法訪問公司網頁的問題,但這類問題常常難以從日誌中查找解決方案。本文探討了有效的解決方式,特別是利用HTTP Archive(HAR)檔案來分析問題根本,幫助客戶瞭解問題的來源,包括使用有用的工具來進行資訊解析。透過案例與經驗分享,讓讀者能更有效地應對類似挑戰。
在這篇文章中,我們將探討常見的下載中斷問題,尤其針對高畫質影片或大檔案的傳輸困難。通過問題描述與解析,我們發現影響下載成功的因素,並提出利用 byte-range 技術進行分段傳輸的解決方案。此外,也會說明調整 header 的重要性,幫助開發者有效改善用戶下載體驗。
在軟體工程中,文件管理常被忽視,但對於多方協作至關重要。本文深入探討API文件、YAML格式和UML圖的應用,強調保持文件的版本控制,使用Swagger和Markdown工具提升可讀性與協作效率。此外,我們將討論如何利用PlantUML輕鬆繪製UML圖,以促進開發團隊之間的有效溝通與理解。
本文介紹了代理伺服器的重要性及其主要功能,包括請求轉發、響應回傳、隱私保護、內容過濾等。此外,本文還探討了各類型的代理伺服器,如正向代理、反向代理、透明代理和高匿名代理,以及它們在網路架構中的角色。瞭解這些概念不僅能增進對網路安全的認識,還能在選擇合適的解決方案時提供幫助。
在資料分析中,資料處理和可視化是不可或缺的兩項重要任務。本文介紹了 ELK 系統(包括 Elasticsearch、Logstash 和 Kibana)以及 Grafana 的核心功能及其在日誌管理和資料分析中的作用,幫助讀者理解這些工具如何提升資料處理效率和可視化效果,從而更好地應用於真實場景中。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
在這一章中,我們探討了 PHP 中的函數,包括函數的基本結構、不同的函數定義方式(如函數聲明、函數表達式、箭頭函數和匿名函數)以及如何呼叫函數。我們還討論了函數的參數處理方式,包括單個參數、多個參數、預設參數值和剩餘參數。此外,我們還介紹了函數的返回值,包括返回單個值、返回物件和返回函數的情況。
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
在PHP中可以用$this、self、與static代表自己這個類別,有些人可能搞不清楚他們的區別,尤其是self、與static,但是他們各別有自己的意義和用法,在實戰中這些些微的差別可能就會造成不可預期的問題,本文仔細說明了他們之間的差別。
Thumbnail
PHP(全名為「PHP: Hypertext Preprocessor」)是一門開源的伺服器端程式語言,為動態網頁開發設計。閱讀本文將讓您瞭解PHP的特點、廣泛支援、易學性、資源豐富以及跨平臺性。
Thumbnail
PHP是一個功能豐富且靈活的語言,用於開發動態和互動性強的網站。本文介紹了PHP的主要功能和用途,以及它的優點和特性。不論你是一個初學者還是一個專業的開發人員,PHP都是一個值得學習和使用的強大工具。
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
在本章節中,我們探討了 PHP 中如何引用和管理套件。學習了如何使用 Composer 來安裝第三方套件,以及如何引用自定義模組。此外,我們還介紹了如何創建和使用自定義套件,並列舉了一些在 PHP 社群中常見且廣泛使用的套件和庫。通過掌握這些知識,開發者可以更有效地管理和利用各種資源。
Thumbnail
這一章節旨在介紹 PHP 中的物件導向編程(OOP)概念。通過詳細講解類別、建構子、訪問修飾符(公開、私有、受保護)、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda 表達式、泛型和反射等概念,使讀者能夠理解和應用這些 OOP 技術來編寫更具結構性和可維護性的 PHP 代碼。
Thumbnail
在這一章中,我們探討了 PHP 中的函數,包括函數的基本結構、不同的函數定義方式(如函數聲明、函數表達式、箭頭函數和匿名函數)以及如何呼叫函數。我們還討論了函數的參數處理方式,包括單個參數、多個參數、預設參數值和剩餘參數。此外,我們還介紹了函數的返回值,包括返回單個值、返回物件和返回函數的情況。
Thumbnail
本章節旨在介紹如何在不同操作系統上安裝和配置PHP環境,並使用命令行工具進行基礎操作。此外,還介紹了使用Visual Studio Code進行PHP開發的步驟,包括安裝擴展和設置調試環境。
Thumbnail
在本節中,我們介紹了PHP的基本語法,包括如何在HTML中嵌入PHP代碼,PHP腳本的執行順序,以及多種註解方式。我們還學習了如何定義和使用變數,包括單個變數和多個變數的賦值方法。這些基礎知識將幫助你開始使用PHP進行Web開發。
Thumbnail
這個章節介紹了PHP的基本特性和應用領域,並且列舉了使用PHP的知名公司和網站。了解PHP的簡單易學、跨平台、嵌入HTML等特性,以及PHP在動態網站、電子商務、內容管理系統、社交媒體平台、數據庫管理和API開發中的應用。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
在PHP中可以用$this、self、與static代表自己這個類別,有些人可能搞不清楚他們的區別,尤其是self、與static,但是他們各別有自己的意義和用法,在實戰中這些些微的差別可能就會造成不可預期的問題,本文仔細說明了他們之間的差別。
Thumbnail
PHP(全名為「PHP: Hypertext Preprocessor」)是一門開源的伺服器端程式語言,為動態網頁開發設計。閱讀本文將讓您瞭解PHP的特點、廣泛支援、易學性、資源豐富以及跨平臺性。
Thumbnail
PHP是一個功能豐富且靈活的語言,用於開發動態和互動性強的網站。本文介紹了PHP的主要功能和用途,以及它的優點和特性。不論你是一個初學者還是一個專業的開發人員,PHP都是一個值得學習和使用的強大工具。