Download the PHP package wlib/dibox without Composer
On this page you can find all versions of the php package wlib/dibox. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package dibox
wlib/dibox
DiBox est un conteneur d'injection de dépendances. Il suit la directive PSR-11.
🚀 DiBox est au coeur de wlib/application que vous pouvez exploiter avec une structure clé en main pour démarrer votre prochain projet via wlib/skeleton.
Installation
Prérequis : PHP 7.4
Utilisation
Instancier vos objets
Le conteneur peut servir pour simplement instancier vos objets :
L'avantage de passer par le conteneur est de disposer de la résolution automatique des classes que vos constructeurs attendent :
Déclarer vos dépendances
Instancier c'est déjà pas mal, mais définir des dépendances c'est encore mieux, surtout pour construire votre application :
Dépendance directe
Pas forcément le plus utile, mais ça fonctionne :
Créer un alias
Pour mettre des surnoms à tout le monde (ou mettre de l'ordre dans votre conteneur, c'est selon) :
Instance existante
Si besoin :
Fermeture de création
Ou Closure pour les initiés ;-). C'est là que les choses sérieuses commencent et que ça devient intéressant :
Vous voyez donc l'étendue des possibles qui s'offre devant vos yeux ébahis !
Valeurs scalaires
Qui peut le plus, peut le moins, vous pouvez aussi stocker de simples valeurs dans le conteneur :
Mode "ArrayAccess"
Le conteneur implémente l'interface ArrayAccess :
Du coup, vous pouvez faire usage de isset() et unset() :
Dépendances partagées (singletons)
Vous pouvez, si besoin, partager des dépendances : le mode "singleton" (mais en mieux, car, comme vous le savez faire des vrais singletons n'est pas toujours une bonne pratique même si c'est pratique) :
Autres méthodes
Ci-après, à connaître :
Fournisseurs de dépendances
Vous êtes encore là ? C'est bien beau, on peut déclarer plein de dépendances et alimenter comme on veut le conteneur mais vous êtes probablement en train de développer une application qui ne connaît peut être pas encore toutes les dépendances qu'elle aura à gérer, ou, vous voulez simplement organiser tout ça dans vos différents namespaces / packages.
Vous avez donc besoin de créer des fournisseurs, qui viendront injecter les dépendances dont ils ont la responsabilité dans l'un de vos conteneurs.
Il est donc temps d'implémenter le contrat wlib\Di\DiBoxProvider :
Voilà, vous maîtrisez ! À vous de jouer.
Exceptions
Il est possible, en cas de malfonction, volontaire ou fortuite, que DiBox lève les exceptions suivantes :
wlib\Di\DiException: levée au moindre truc qui chagrine le conteneur,wlib\Di\DiNotFoundException: conforme à PSR-11, levée si vous tentez d'accèder à une dépendance qui n'existe pas.
Tests unitaires
N'hésitez pas à prendre connaissance du fichier /tests/Unit/DiBoxTest.php qui vous donnera quelques détails techniques supplémentaires sur l'utilisation de DiBox.
Les tests unitaires font usage de la libraire Pest.