PHP 関数ライブラリを作成して依存関係の挿入をサポートするにはどうすればよいですか?

WBOY
リリース: 2024-04-26 13:15:01
オリジナル
430 人が閲覧しました

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート