Comment créer une bibliothèque de fonctions PHP et la rendre compatible avec l'injection de dépendances ?

WBOY
Libérer: 2024-04-26 13:15:01
original
430 Les gens l'ont consulté

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
Copier après la connexion

Remplissez les informations sur le package, puis exécutez la commande suivante pour installer le chargeur automatique Composer :

composer install
Copier après la connexion

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
Copier après la connexion

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!";
    }
}
Copier après la connexion

配置依赖项注入

为了支持 DI,您需要使用一个容器来解决依赖项。本文将使用 PhpDI 容器。

在您的函数库包中安装 PhpDI:

composer require php-di/phpdi
Copier après la connexion

接下来,在 src/config.php

$containerBuilder = new \DI\ContainerBuilder();
$containerBuilder->addDefinitions([
    'MyLibrary\FunctionLibrary' => \DI\factory(function () {
        return new FunctionLibrary();
    })
]);

$container = $containerBuilder->build();
Copier après la connexion

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!
Copier après la connexion
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
    {
        // 保存用户到数据库
    }
}
Copier après la connexion

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));
    })
]);
Copier après la connexion
🎜🎜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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal