Je me demande si l’une des principales caractéristiques d’un langage de programmation est d’avoir la capacité de surcharger des fonctions via des arguments. Je pense que c'est essentiel dans le contexte de la programmation orientée objet.
Est-ce intentionnellement laissé derrière et non autorisé? Ou la surcharge n'est-elle pas une bonne pratique?
php
method-overloading
utilisateur1179459
la source
la source
Réponses:
Qui vous a dit que PHP ne supporte pas la surcharge de fonctions? !!!
En réalité, PHP supporte la surcharge de fonctions, mais de manière différente. Les fonctionnalités de surcharge de PHP sont différentes de celles de Java:
Commander les blocs de code suivants.
Fonction pour trouver la somme de n nombres:
Fonction pour ajouter deux nombres ou pour concaténer deux chaînes:
Approche orientée objet incluant la surcharge de méthode:
Réf.: Http://php.net/manual/en/language.oop5.overloading.php
En PHP, des moyens de surcharge , vous pouvez ajouter des membres de l' objet à l' exécution, en mettant en œuvre certaines des méthodes magiques comme
__set
,__get
,__call
etc.la source
findSum(10, "steve", { 86, "2012-09-20" });
. Une véritable surcharge autoriserait de nouveaux paramètres de types différents.Pas une prise en charge complète "Surcharge traditionnelle", seulement partielle .
Remarque: la deuxième partie de cette définition est généralement associée à des langages de programmation à typage statique qui effectuent une vérification de type et / ou une vérification d'arité afin de choisir la déclaration correcte. PHP n'est pas un langage à typage statique, il est dynamique et utilise un typage faible .
SUPPORT PHP :
YES, permet d’ appeler plusieurs méthodes portant le même nom mais avec des quantités différentes . Voir func_get_args et réponse @rajukoyilandy, nous pouvons utiliser
f(x)
etf(x,y)
.YES, permet d' appeler plusieurs méthodes portant le même nom mais de types différents . Se utilisation interne de gettype dans la méthode.
NOT permet de déclarer plusieurs méthodes portant le même nom mais avec des quantités différentes . C'est parce que nous pouvons appeler
f(x)
etf(x,y)
avec la mêmef
déclaration.NOT permet de déclarer plusieurs méthodes portant le même nom mais de types différents . C'est parce que le compilateur PHP doit interpréter
f($integer,$string)
comme la même fonction quef($string,$integer)
.Voir aussi la documentation sur la surcharge PHP5 pour des explications sur la "surcharge non traditionnelle".
la source