<code>interface A { public function code(); } interface B { public function code(string $string); } class C implements A,B { //...code }</code>
Wenn C diese beiden Schnittstellen gleichzeitig implementieren muss, gibt es dann eine Möglichkeit, die Codemethoden in den beiden Schnittstellen A und B gleichzeitig zu verwenden? ? ? ?
Lokale Tests können nur eine dieser Methoden verwenden
<code>interface A { public function code(); } interface B { public function code(string $string); } class C implements A,B { //...code }</code>
Wenn C diese beiden Schnittstellen gleichzeitig implementieren muss, gibt es dann eine Möglichkeit, die Codemethoden in den beiden Schnittstellen A und B gleichzeitig zu verwenden? ? ? ?
Lokale Tests können nur eine dieser Methoden verwenden
PHP kann nicht überladen werden (gleicher Methodenname, aber Parameter sind inkonsistent) und kann bei der Vererbung überschrieben werden (gleicher Methodenname, unabhängig davon, ob die Parameter konsistent sind).
Mit anderen Worten, egal wie sich die Parameter von PHP ändern, solange der Methodenname derselbe ist, wird er als dieselbe Methode dieser Klasse betrachtet.
Natürlich können wir als dynamische Sprache die Überladung von Java durch magische Methoden simulieren. Referenz: http://php.net/manual/en/lang...
Es gibt eine grobe Methode: Sie integrieren die spezifische Logik der AB-Schnittstelle in die C-Schnittstelle und rufen die C-Schnittstelle direkt auf^_^
func_get_args http://php.net/manual/en/func...
Diese Art des Schreibens selbst ist nur ein Versuch und Irrtum. Die öffentlichen Methoden werden nicht in jedem Port gleich geschrieben.
Sie können mehr über die Eigenschaften von PHP erfahren.
php unterstützt keinen Polymorphismus, daher ist es am besten, diese Schreibweise zu vermeiden