ホームページ  >  記事  >  バックエンド開発  >  PHP 関数ライブラリを作成して依存関係の挿入をサポートするにはどうすればよいですか?

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

WBOY
WBOYオリジナル
2024-04-26 13:15:01430ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。