首頁 後端開發 php教程 如何建立 PHP 函數庫並使其支援依賴項注入?

如何建立 PHP 函數庫並使其支援依賴項注入?

Apr 26, 2024 pm 01:15 PM
mysql php composer 依賴項注入

如何建立支援依賴項注入(DI)的 PHP 函數庫:建立 Composer 套件作為函數庫。實作函數庫功能,如在檔案中實作一個問候函數。安裝 PhpDI 容器並建立容器配置,將函數庫類別作為工廠定義新增到容器中。在程式碼中使用函數庫並注入依賴項,例如使用容器取得函數庫類別的實例。在實際應用中,例如將使用者資料儲存到資料庫,注入資料庫連線以提高靈活性。

如何创建 PHP 函数库并使其支持依赖项注入?

如何建立PHP 函數函式庫並使其支援相依性注入

介紹

#函數庫是PHP 中程式碼重複使用的強大工具。透過使用依賴項注入(DI),您可以編寫更靈活、可測試的函數庫。本文將向您介紹如何建立和使用支援 DI 的 PHP 函數庫。

建立函數庫

首先,您需要建立一個 Composer 套件作為您的函數庫。使用composer 套件管理器,透過執行以下命令建立新套件:

composer init
登入後複製

填寫套件信息,然後執行以下命令安裝Composer 自動載入器:

composer install
登入後複製

現在,在您的專案中建立一個新目錄,用作函數庫程式碼。例如:

php
└── vendor
└── my-library
    └── src
        └── FunctionLibrary.php
登入後複製

實作函式庫

FunctionLibrary.php 中,實作函式庫功能。例如:

namespace MyLibrary;

class FunctionLibrary
{
    public function greet(string $name): string
    {
        return "Hello, $name!";
    }
}
登入後複製

配置依賴項注入

為了支援 DI,您需要使用一個容器來解決依賴項。本文將使用 PhpDI 容器。

在您的函式庫包中安裝PhpDI:

composer require php-di/phpdi
登入後複製

接下來,在src/config.php 中建立一個容器設定:

$containerBuilder = new \DI\ContainerBuilder();
$containerBuilder->addDefinitions([
    'MyLibrary\FunctionLibrary' => \DI\factory(function () {
        return new FunctionLibrary();
    })
]);

$container = $containerBuilder->build();
登入後複製

使用函數庫

現在,您可以在程式碼中使用您的函數庫並註入依賴項:

use MyLibrary\FunctionLibrary;
use DI\Container;

$container = new Container();

$functionLibrary = $container->get(FunctionLibrary::class);

echo $functionLibrary->greet('John'); // 输出:Hello, John!
登入後複製

實戰案例

假設您有一個將使用者資料儲存到資料庫的函數庫。您可以在依賴項注入中註入資料庫連接,使您的函數庫更加靈活且可測試:

namespace MyLibrary;

class UserRepository
{
    private $connection;

    public function __construct(\PDO $connection)
    {
        $this->connection = $connection;
    }

    public function persist(User $user): void
    {
        // 保存用户到数据库
    }
}
登入後複製

然後,在容器配置中新增以下定義:

$containerBuilder->addDefinitions([
    \PDO::class => \DI\factory(function () {
        return new \PDO('mysql:host=localhost;dbname=my_database', 'username', 'password');
    }),
    'MyLibrary\UserRepository' => \DI\factory(function (Container $container) {
        return new UserRepository($container->get(\PDO::class));
    })
]);
登入後複製

以上是如何建立 PHP 函數庫並使其支援依賴項注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MySQL:初學者的數據管理易用性 MySQL:初學者的數據管理易用性 Apr 09, 2025 am 12:07 AM

MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

navicat premium怎麼創建 navicat premium怎麼創建 Apr 09, 2025 am 07:09 AM

使用 Navicat Premium 創建數據庫:連接到數據庫服務器並輸入連接參數。右鍵單擊服務器並選擇“創建數據庫”。輸入新數據庫的名稱和指定字符集和排序規則。連接到新數據庫並在“對象瀏覽器”中創建表。右鍵單擊表並選擇“插入數據”來插入數據。

mysql:簡單的概念,用於輕鬆學習 mysql:簡單的概念,用於輕鬆學習 Apr 10, 2025 am 09:29 AM

MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

navicat如何執行sql navicat如何執行sql Apr 08, 2025 pm 11:42 PM

在 Navicat 中執行 SQL 的步驟:連接到數據庫。創建 SQL 編輯器窗口。編寫 SQL 查詢或腳本。單擊“運行”按鈕執行查詢或腳本。查看結果(如果執行查詢的話)。

navicat怎麼新建連接mysql navicat怎麼新建連接mysql Apr 09, 2025 am 07:21 AM

可在 Navicat 中通過以下步驟新建 MySQL 連接:打開應用程序並選擇“新建連接”(Ctrl N)。選擇“MySQL”作為連接類型。輸入主機名/IP 地址、端口、用戶名和密碼。 (可選)配置高級選項。保存連接並輸入連接名稱。

PHP的未來:改編和創新 PHP的未來:改編和創新 Apr 11, 2025 am 12:01 AM

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

Navicat 無法連接 MySQL/MariaDB/PostgreSQL 等數據庫的解決方法 Navicat 無法連接 MySQL/MariaDB/PostgreSQL 等數據庫的解決方法 Apr 08, 2025 pm 11:00 PM

Navicat 無法連接數據庫的常見原因及其解決方法:1. 檢查服務器運行狀態;2. 核對連接信息;3. 調整防火牆設置;4. 配置遠程訪問;5. 排除網絡問題;6. 檢查權限;7. 保障版本兼容性;8. 排除其他可能性。

Navicat 連接數據庫錯誤代碼及解決辦法 Navicat 連接數據庫錯誤代碼及解決辦法 Apr 08, 2025 pm 11:06 PM

Navicat 連接數據庫時常見的錯誤及解決方案:用戶名或密碼錯誤(Error 1045)防火牆阻止連接(Error 2003)連接超時(Error 10060)無法使用套接字連接(Error 1042)SSL 連接錯誤(Error 10055)連接嘗試過多導致主機被阻止(Error 1129)數據庫不存在(Error 1049)沒有權限連接到數據庫(Error 1000)

See all articles