suchen
HeimPHP-BibliothekenAndere BibliothekenPHP-Bibliothek für Abhängigkeitsinjektionscontainer
PHP-Bibliothek für Abhängigkeitsinjektionscontainer
<?php
namespace Auryn;
class CachingReflector implements Reflector
{
    const CACHE_KEY_CLASSES = 'auryn.refls.classes.';
    const CACHE_KEY_CTORS = 'auryn.refls.ctors.';
    const CACHE_KEY_CTOR_PARAMS = 'auryn.refls.ctor-params.';
    const CACHE_KEY_FUNCS = 'auryn.refls.funcs.';
    const CACHE_KEY_METHODS = 'auryn.refls.methods.';
    private $reflector;
    private $cache;
    public function __construct(Reflector $reflector = null, ReflectionCache $cache = null)
    {
        $this->reflector = $reflector ?: new StandardReflector;
        $this->cache = $cache ?: new ReflectionCacheArray;
    }
    public function getClass($class)
    {
        $cacheKey = self::CACHE_KEY_CLASSES . strtolower($class);
        if (!$reflectionClass = $this->cache->fetch($cacheKey)) {
            $reflectionClass = new \ReflectionClass($class);
            $this->cache->store($cacheKey, $reflectionClass);
        }
        return $reflectionClass;
    }

Unsere Idee ist, dass die Anwendung, wenn sie eine Foo-Klasse verwendet, die Foo-Klasse erstellt und die Methode der Foo-Klasse aufruft. Wenn diese Methode eine Bar-Klasse erfordert, erstellt sie die Bar-Klasse und ruft die Methode der Bar-Klasse auf. und diese Methode Wenn eine Bim-Klasse benötigt wird, wird die Bim-Klasse erstellt und dann werden andere Arbeiten ausgeführt. Die Idee bei der Verwendung der Abhängigkeitsinjektion besteht darin, dass die Anwendung die Foo-Klasse verwendet, die Foo-Klasse die Bar-Klasse benötigt und die Bar-Klasse die Bim-Klasse benötigt. Erstellen Sie dann zuerst die Bim-Klasse, erstellen Sie dann die Bar-Klasse und injizieren Sie Bim. Erstellen Sie dann die Foo-Klasse und fügen Sie die Bar-Klasse ein. Rufen Sie dann die Foo-Methode auf. Foo ruft die Bar-Methode auf und führt dann andere Arbeiten aus. Dies ist das Inversion-of-Control-Muster. Die Kontrolle der Abhängigkeiten erfolgt umgekehrt zum Anfang der Aufrufkette. Auf diese Weise haben Sie die vollständige Kontrolle über Abhängigkeiten und steuern das Verhalten Ihres Programms, indem Sie verschiedene injizierte Objekte anpassen. Beispielsweise verwendet die Foo-Klasse Memcache, und Sie können stattdessen Redis verwenden, ohne den Code der Foo-Klasse zu ändern.

Die Idee nach der Verwendung eines Abhängigkeitsinjektionscontainers besteht darin, dass die Anwendung, wenn sie auf die Foo-Klasse zugreifen muss, die Foo-Klasse aus dem Container abruft, der Container die Bim-Klasse erstellt, dann die Bar-Klasse erstellt und Bim injiziert und dann die Klasse Foo erstellt Foo-Klasse, injiziert Bar und wendet dann die Foo-Methode an, Foo ruft die Bar-Methode auf und erledigt dann andere Arbeiten. Kurz gesagt, der Container ist für die Instanziierung, das Einfügen von Abhängigkeiten, die Verarbeitung von Abhängigkeiten usw. verantwortlich.


Haftungsausschluss

Alle Ressourcen auf dieser Website werden von Internetnutzern bereitgestellt oder von großen Download-Sites nachgedruckt. Bitte überprüfen Sie selbst die Integrität der Software! Alle Ressourcen auf dieser Website dienen nur als Referenz zum Lernen. Bitte nutzen Sie diese nicht für kommerzielle Zwecke. Andernfalls sind Sie für alle Folgen verantwortlich! Wenn ein Verstoß vorliegt, kontaktieren Sie uns bitte, um ihn zu löschen. Kontaktinformationen: admin@php.cn

Verwandter Artikel

Empfehlung für die Go-Template-Engine-BibliothekEmpfehlung für die Go-Template-Engine-Bibliothek

13Aug2024

In diesem Artikel werden drei beliebte Go-Template-Engine-Bibliotheken bewertet. Der Schwerpunkt liegt auf dem Funktionsumfang, der Leistung und der Sicherheit jeder Bibliothek. Die Ergebnisse zeigen, dass GoHugo den umfangreichsten Funktionsumfang bietet, bei gleichzeitiger Leistungsfähigkeit der Bibliotheken

Top-Open-Source-Bibliothek für Tailwind-CSS-KomponentenTop-Open-Source-Bibliothek für Tailwind-CSS-Komponenten

26Aug2023

In diesem Tutorial stellen wir die besten Open-Source-Bibliotheken für tailwindCSS-Komponenten vor. TailwindCSS ist ein Utility-First-CSS-Framework, das viele vorgefertigte Komponenten bereitstellt, um Entwicklern dabei zu helfen, schnell hochmoderne Webanwendungen zu erstellen. TailwindCSS verfügt über einen eigenen Satz vorgefertigter Komponenten und mehrere Open-Source-Bibliotheken, die integriert werden können, um das Entwicklungserlebnis weiter zu verbessern. Cascading Style Sheets sind eine Sprache, mit der beschrieben wird, wie Webseiten aussehen sollen, einschließlich ihrer Farben, ihres Layouts und ihrer Schriftarten. Darüber hinaus enthält CSS eine Vielzahl von Tools zum Bearbeiten und Ändern Ihrer Website. Nachfolgend sind die besten Open-Source-Bibliotheken für Tailwind-CSS-Elemente aufgeführt – das Tailwind-Starterkit namens TailwindStarterK

Wie wählen Sie die beste XML-Bibliothek für Ihr Python-Projekt aus?Wie wählen Sie die beste XML-Bibliothek für Ihr Python-Projekt aus?

27Oct2024

XML-Erstellung in Python: Ein umfassender Leitfaden zu Bibliotheken und MethodenBei der Erstellung von XML-Dokumenten in Python stehen Entwicklern verschiedene Bibliotheken zur Verfügung...

Was ist die Drittanbieter-Bibliothek für die Python-Datenanalyse?Was ist die Drittanbieter-Bibliothek für die Python-Datenanalyse?

28Jan2021

Die Bibliotheken von Drittanbietern für die Python-Datenanalyse sind: 1. Numpy; 3. Scikit-Learn;

Welche Java-Bibliothek eignet sich am besten für Graphalgorithmen?Welche Java-Bibliothek eignet sich am besten für Graphalgorithmen?

21Nov2024

Zuverlässige Java-Bibliotheken für GraphalgorithmenDie Ermittlung der am besten geeigneten Java-Bibliothek für Graphalgorithmen kann eine Herausforderung sein. Dieser Artikel...

Welche C-Regex-Bibliothek ist die richtige für Sie?Welche C-Regex-Bibliothek ist die richtige für Sie?

30Oct2024

Welche C-Regex-Bibliothek ist die beste Wahl für Ihre Anforderungen? Bei der Arbeit mit regulären Ausdrücken in C bieten verschiedene Bibliotheken unterschiedliche...

See all articles