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