>백엔드 개발 >PHP 튜토리얼 >PHP 함수 라이브러리를 생성하고 종속성 주입을 지원하도록 만드는 방법은 무엇입니까?

PHP 함수 라이브러리를 생성하고 종속성 주입을 지원하도록 만드는 방법은 무엇입니까?

WBOY
WBOY원래의
2024-04-26 13:15:01472검색

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에서 함수 라이브러리 함수를 구현합니다. 예: 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();

종속성 주입 구성

DI를 지원하려면 컨테이너를 사용하여 종속성을 해결해야 합니다. 이 문서에서는 PhpDI 컨테이너를 사용합니다.

라이브러리 패키지에 PhpDI 설치:

use MyLibrary\FunctionLibrary;
use DI\Container;

$container = new Container();

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

echo $functionLibrary->greet('John'); // 输出:Hello, John!
다음으로 src/config.php에서 컨테이너 구성을 만듭니다.
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));
    })
]);
🎜🎜실제 예🎜🎜🎜사용자 데이터를 데이터베이스에 저장하는 라이브러리가 있다고 가정합니다. 종속성 주입에 데이터베이스 연결을 삽입하여 라이브러리를 더욱 유연하고 테스트 가능하게 만들 수 있습니다. 🎜rrreee🎜 그런 다음 컨테이너 구성에 다음 정의를 추가합니다. 🎜rrreee

위 내용은 PHP 함수 라이브러리를 생성하고 종속성 주입을 지원하도록 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.