Kann Code in eine PHP-Klasse eingebunden werden?
Code direkt in einbinden Der Rumpf einer Klasse ist in PHP nicht möglich. Methoden können jedoch aus externen Dateien außerhalb des Klassenkörpers eingebunden werden.
Geschäftslogik trennen
Der Wunsch, Geschäftslogik von anderen Klassenelementen zu trennen, ist verständlich. Allerdings verstößt das Einschließen von Methoden aus einer separaten Datei gegen die PHP-Syntaxregeln.
Leistungsbedenken
Wenn Myclass.php nur einmal pro Anfrage eingebunden wird, wird die externe Datei Myclass_methods.php verwendet wird ebenfalls nur einmal berücksichtigt. Daher sollte die Leistung kein großes Problem darstellen.
Richtige Lösung: Strategiemuster
Um das Klassenverhalten dynamisch zu ändern, ist das Strategiemuster ein geeigneterer Ansatz als die Einbeziehung externer Dateien. Dabei geht es darum, eine Schnittstelle mit einer definierten Methode zu erstellen und mehrere Klassen zu implementieren, die der Schnittstelle mit unterschiedlichen Implementierungen der Methode entsprechen.
Implementierung:
// MeowingInterface.php interface MeowingInterface { public function meow(): string; } // RegularMeow.php class RegularMeow implements MeowingInterface { public function meow(): string { return 'meow'; } } // LolcatMeow.php class LolcatMeow implements MeowingInterface { public function meow(): string { return 'lolz xD'; } } // Cat.php class Cat { private MeowingInterface $meowingBehaviour; public function setMeowingBehaviour(MeowingInterface $meowingBehaviour): void { $this->meowingBehaviour = $meowingBehaviour; } public function meow(): string { return $this->meowingBehaviour->meow(); } }
Verwendung:
// index.php require_once 'MeowingInterface.php'; require_once 'RegularMeow.php'; require_once 'LolcatMeow.php'; require_once 'Cat.php'; $cat = new Cat(); $cat->setMeowingBehaviour(new RegularMeow()); echo $cat->meow(); // Outputs "meow" // Change behaviour $cat->setMeowingBehaviour(new LolcatMeow()); echo $cat->meow(); // Outputs "lolz xD"
Indem Sie dem Strategiemuster folgen, können Sie das Verhalten einer Klasse einfach ändern, ohne auf unorthodoxe Praktiken wie das Einbinden externer Dateien zurückgreifen zu müssen. Dieser Ansatz bietet auf lange Sicht Codeflexibilität und Wartbarkeit.
Das obige ist der detaillierte Inhalt vonKönnen externe Methoden in eine PHP-Klasse eingebunden werden und was ist die beste Alternative?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!