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
에서 함수 라이브러리 함수를 구현합니다. 예: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!