Maison >développement back-end >tutoriel php >Comment créer une bibliothèque de fonctions PHP et la rendre compatible avec l'injection de dépendances ?
Comment créer une bibliothèque de fonctions PHP prenant en charge l'injection de dépendances (DI) : créez un package Composer en tant que bibliothèque de fonctions. Implémentez des fonctions de bibliothèque de fonctions, telles que l'implémentation d'une fonction de message d'accueil dans un fichier. Installez le conteneur PhpDI et créez une configuration de conteneur, en ajoutant la classe de bibliothèque de fonctions en tant que définition d'usine au conteneur. Utilisez des bibliothèques dans le code et injectez des dépendances, par exemple en utilisant des conteneurs pour obtenir des instances de classes de bibliothèque. Dans des applications pratiques, telles que la sauvegarde des données utilisateur dans la base de données, l'injection de connexions à la base de données pour améliorer la flexibilité.
Comment créer une bibliothèque de fonctions PHP et la rendre compatible avec l'injection de dépendances
Introduction
Les bibliothèques de fonctions sont des outils puissants pour la réutilisation de code en PHP. En utilisant l'injection de dépendances (DI), vous pouvez écrire des bibliothèques plus flexibles et testables. Cet article vous montrera comment créer et utiliser une bibliothèque de fonctions PHP prenant en charge DI.
Créer une bibliothèque de fonctions
Tout d'abord, vous devez créer un package Composer comme bibliothèque de fonctions. À l'aide du gestionnaire de packages Composer, créez un nouveau package en exécutant la commande suivante :
composer init
Remplissez les informations sur le package, puis exécutez la commande suivante pour installer le chargeur automatique Composer :
composer install
Maintenant, créez un nouveau répertoire dans votre projet à utiliser en tant que code de bibliothèque de fonctions. Par exemple :
php └── vendor └── my-library └── src └── FunctionLibrary.php
Implémentez la bibliothèque de fonctions
Dans FunctionLibrary.php
, implémentez la fonction de la bibliothèque de fonctions. Par exemple : 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();
Configuration de l'injection de dépendances
Pour prendre en charge DI, vous devez utiliser un conteneur pour résoudre les dépendances. Cet article utilisera le conteneur PhpDI. Installez PhpDI dans votre package de bibliothèque :use MyLibrary\FunctionLibrary; use DI\Container; $container = new Container(); $functionLibrary = $container->get(FunctionLibrary::class); echo $functionLibrary->greet('John'); // 输出:Hello, John!Ensuite, créez une configuration de conteneur dans
src/config.php
: namespace MyLibrary; class UserRepository { private $connection; public function __construct(\PDO $connection) { $this->connection = $connection; } public function persist(User $user): void { // 保存用户到数据库 } }
Utilisation de la bibliothèque
Maintenant, vous pouvez utiliser votre bibliothèque dans votre code et injectez des dépendances : 🎜$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)); }) ]);🎜🎜Exemple pratique🎜🎜🎜Supposons que vous disposiez d'une bibliothèque qui enregistre les données utilisateur dans une base de données. Vous pouvez rendre votre bibliothèque plus flexible et testable en injectant la connexion à la base de données en injection de dépendances : 🎜rrreee🎜 Ensuite, ajoutez la définition suivante dans la configuration du conteneur : 🎜rrreee
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!