依存関係注入 (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 中国語 Web サイトの他の関連記事を参照してください。