Maison  >  Article  >  développement back-end  >  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 et la rendre compatible avec l'injection de dépendances ?

WBOY
WBOYoriginal
2024-04-26 13:15:01390parcourir

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é.

如何创建 PHP 函数库并使其支持依赖项注入?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn