Aus C ++ Hintergrund;)
Wie kann ich PHP-Funktionen überladen?
Eine Funktionsdefinition, wenn Argumente vorhanden sind, und eine andere, wenn keine Argumente vorhanden sind? Ist es in PHP möglich? Oder sollte ich if else verwenden, um zu überprüfen, ob Parameter von $ _GET und POST übergeben wurden? und sie in Beziehung setzen?
php
arguments
overloading
Vamsi Krishna B.
quelle
quelle
overloading
als in der Frage gestellt. (Siehe die akzeptierte Antwort für weitere Details.)Antworten:
Sie können PHP-Funktionen nicht überladen. Funktionssignaturen basieren nur auf ihren Namen und enthalten keine Argumentlisten. Sie können also nicht zwei Funktionen mit demselben Namen haben. Das Überladen von Klassenmethoden unterscheidet sich in PHP von vielen anderen Sprachen. PHP verwendet dasselbe Wort, beschreibt jedoch ein anderes Muster.
Sie können jedoch eine variable Funktion deklarieren , die eine variable Anzahl von Argumenten akzeptiert . Sie würden
func_num_args()
und verwendenfunc_get_arg()
, um die Argumente zu übergeben, und sie normal verwenden.Beispielsweise:
quelle
myFunc(/*...*/)
.PHP unterstützt keine herkömmliche Methodenüberladung. Eine Möglichkeit, das zu erreichen, was Sie möchten, besteht darin, die zu verwenden
__call
magische Methode zu verwenden:quelle
__call()
. Ziemlich kreativ (wenn auch etwas ausführlich)! +1Um eine Funktion zu überladen, übergeben Sie den Parameter einfach standardmäßig als null.
quelle
overload
praktisch alles ist, was es in PHP für eine Funktion bedeuten kann - trotzdem machen Sie einen nützlichen Punkt dass die Leser wissen sollten.Für manche mag es hackisch sein, aber ich habe auf diese Weise gelernt, wie Cakephp einige Funktionen ausführt, und es angepasst, weil mir die Flexibilität gefällt, die es schafft
Die Idee ist, dass Sie verschiedene Arten von Argumenten, Arrays, Objekten usw. haben. Dann erkennen Sie, was Ihnen übergeben wurde, und gehen von dort aus
quelle
quelle
Was ist damit:
quelle
In 5.6 PHP können Sie die Verwendung Splat - Operator
...
als letzter Parameter und abschaffenfunc_get_args()
undfunc_num_args()
:Sie können damit auch Argumente entpacken:
Ist äquivalent zu:
quelle
quelle
PHP unterstützt derzeit keine Überladung. Hoffe, dass dies in den anderen Versionen wie in anderen Programmiersprachen implementiert wird.
Kasse dieser Bibliothek, Dies ermöglicht es Ihnen, PHP Overloading in Bezug auf Schließungen zu verwenden. https://github.com/Sahil-Gulati/Overloading
quelle
Leider gibt es in PHP keine Überlastung wie in C #. Aber ich habe einen kleinen Trick. Ich deklariere Argumente mit Standard-Nullwerten und überprüfe sie in einer Funktion. Auf diese Weise kann meine Funktion abhängig von den Argumenten verschiedene Dinge tun. Unten ist ein einfaches Beispiel:
quelle