Ich möchte eine Klassenberechtigung deklarieren, die um mehrere untergeordnete Klassen erweitert wird.PHP: Erweitern Sie die Authentifizierungsklasse mit den Methoden von childs
// Parent class that should be called
abstract class auth
{
// Force child classes to implement this method
abstract public function authUser($uid, $pw);
}
class configAuth1 extends auth
{
public function authUser($uid, $pw)
{
// Do some authentication stuff
return false;
}
}
class configAuth2 extends auth
{
public function authUser($uid, $pw)
{
// Do some authentication stuff
return true;
}
}
Nun möchte Ich mag die Elternklasse nennen und alle untergeordneten Klassen Methoden authUser()
versuchen, bis ein true zurück.
Also ich würde sagen, es ist nicht sinnvoll, alle Kinder manuell instanziieren. Wie kann ich damit umgehen?
UPDATE
Derzeit löse ich das mit get_declared_classes()
und ReflectionClass
. Ist das auf einem besseren Weg lösbar?
Vielen Dank. In diesem Fall muss ich eine Instanz jeder Kindklasse hinzufügen - ist das nicht automatisch möglich? – alve89
Diese Aufgabe kann auf viele Arten gelöst werden. Die gewählte Methode hängt von Ihrem Anwendungsdesign ab. Lesen Sie zum Beispiel [Service Locator] (https://en.wikipedia.org/wiki/Service_locator_pattern) und [Dependency Injection] (https://en.wikipedia.org/wiki/Dependency_injection). Das automatische Erstellen und Binden von Instanzen wird oft auch als "Autowiring" bezeichnet. Diese Funktion wird von vielen Bibliotheken und Frameworks bereitgestellt. – Timurib