In Laravel injiziere ich ein Objekt in die übergeordnete Klasse und möchte dann je nach Unterklasse unterschiedliche Implementierungen dieses Objekts einfügen.

WBOY
Freigeben: 2023-03-01 20:48:02
Original
992 Leute haben es durchsucht

Ich injiziere ein Objekt in die übergeordnete Klasse und möchte dann je nach Unterklasse unterschiedliche Implementierungen dieses Objekts injizieren.

Da die übergeordnete Klasse dieses Objekt verwendet, kann ich es nicht in die Unterklasse einfügen, aber ich benötige eine andere Implementierung

Ich kontrolliere den injizierten Code:

In Laravel injiziere ich ein Objekt in die übergeordnete Klasse und möchte dann je nach Unterklasse unterschiedliche Implementierungen dieses Objekts einfügen.

Das Schreiben auf diese Weise funktioniert nicht, da das Objekt in die übergeordnete Klasse eingefügt wird. Die Stelle, an der es in die übergeordnete Klasse eingefügt wird:

In Laravel injiziere ich ein Objekt in die übergeordnete Klasse und möchte dann je nach Unterklasse unterschiedliche Implementierungen dieses Objekts einfügen.

Antwortinhalt:

Ich injiziere ein Objekt in die übergeordnete Klasse und möchte dann je nach Unterklasse unterschiedliche Implementierungen dieses Objekts injizieren.

Da die übergeordnete Klasse dieses Objekt verwendet, kann ich es nicht in die Unterklasse einfügen, aber ich benötige eine andere Implementierung

Ich kontrolliere den injizierten Code:

In Laravel injiziere ich ein Objekt in die übergeordnete Klasse und möchte dann je nach Unterklasse unterschiedliche Implementierungen dieses Objekts einfügen.

Das Schreiben auf diese Weise funktioniert nicht, da das Objekt in die übergeordnete Klasse eingefügt wird. Die Stelle, an der es in die übergeordnete Klasse eingefügt wird:

In Laravel injiziere ich ein Objekt in die übergeordnete Klasse und möchte dann je nach Unterklasse unterschiedliche Implementierungen dieses Objekts einfügen.

Methode 1: Instanzen nicht direkt in die Aktionsmethode der übergeordneten Klasse einfügen. Die übergeordnete Klasse erhält verwandte Instanzen von anderen Methoden, und die Unterklasse überschreibt diese Methode und gibt die von ihr selbst injizierte Instanz zurück. Zum Beispiel:

Elternklasse:

<code class="php">public function update()
{
    $this->validate($this->getRequest(), ...);
}

protected function getRequest()
{
    return app(Request::class);
}</code>
Nach dem Login kopieren

Unterkategorien:

<code class="php">protected function getRequest()
{
    return app(RoleRequest::class);
}</code>
Nach dem Login kopieren

Methode 2: Merkmal verwenden.

Methode 3: In __construct injizieren. Ähnlich wie bei Methode 1 hängt das __construct der übergeordneten Klasse nicht von Parametern ab, und das __construct der Unterklasse hängt nach Belieben davon ab.

Warum ist es so gestaltet?

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage