Qu'est-ce que la fonction de surcharge et de remplacement dans le php?
En PHP, qu'entendez-vous par surcharge de fonctions et la fonction primordiale. et quelle est la différence entre les deux? n'arrivais pas à savoir quelle est la différence entre eux.
- Vous pouvez utiliser overloadable classe dans ce lien: stackoverflow.com/questions/4697705/php-function-overloading/...
Vous devez vous connecter pour publier un commentaire.
Surcharge est de définir des fonctions qui ont des signatures similaires, mais ont des paramètres différents. Primordial est pertinente que dans les classes dérivées, où la classe parente a défini une méthode et la classe dérivée souhaite remplacer cette méthode.
En PHP, vous pouvez seulement la surcharge de méthodes à l'aide de la méthode magique
__call
.Un exemple de primordial:
__call
.parent::myFoo();
à l'intérieur de la Barre->myFoo() appelle Foo->myFoo() dans la Barre.func_get_args()
oufunc_num_args()
ont absolument rien à voir avec la surcharge. Véritable surcharge signifie que vous pouvez déclarermyFunc(\DateTime $foo)
etmyFunc(\Vendor\Package\Model $bar, int $baz)
qui se comportent de totalement différent. La surcharge des moyens de différents types (et peut-être aussi un nombre différent d'arguments et une mise en œuvre différente.Fonction de la surcharge se produit lorsque vous définissez le même nom de fonction deux fois (ou plus) à l'aide de différents paramètres. Par exemple:
Dans l'exemple ci-dessus, la fonction
compute
est surchargé avec deux paramètres différentes signatures. *Ce n'est pas encore prise en charge dans PHP. Une alternative est d'utiliser des arguments optionnels:Fonction primordiale se produit lorsque vous étendez une classe et de réécrire une fonction qui existait dans la classe parente:
Par exemple,
compute
remplace le comportement énoncées dansAddition
.Subtraction
classe prolonger laAddition
classe. 🙂À proprement parler, il n'y a pas de différence, puisque vous ne pouvez pas faire les deux 🙂
Fonction primordiale qui aurait pu être fait avec une extension PHP comme de l'APD, mais il est obsolète, et autant que je sache, la dernière version est inutilisable.
De surcharge de fonctions en PHP ne peut pas être effectuée en raison de la dynamique de frappe, c'est à dire, en PHP, vous n'avez pas de "définir" les variables d'un type particulier. Exemple:
Chaque variable est d'un type différent, et pourtant vous pouvez connaître le type avant l'exécution (voir la 4ème).
A titre de comparaison, les autres langues utilisent:
Dans le dernier exemple, vous devez avec force définir le type de la variable (par exemple, j'ai utilisé le type de données "quelque chose").
Une autre "question" pourquoi la fonction de surcharge n'est pas possible en PHP:
PHP dispose d'une fonction appelée func_get_args(), qui retourne un tableau d'arguments courants, maintenant, considérons le code suivant:
En considérant à la fois les fonctions d'accepter toute somme d'arguments, à qui l'on doit le compilateur choisir?
Enfin, je tiens à souligner pourquoi les réponses ci-dessus sont en partie erronées;
fonction surcharge/prépondérant n'est PAS égal à méthode surcharge/prépondérante.
Où une méthode est comme une fonction, mais spécifique à une classe, dans ce cas, PHP ne permet d'écraser dans les classes, mais là encore pas de surcharge, en raison de la langue de la sémantique.
Pour conclure, les langues comme le Javascript permet d'écraser (mais encore une fois, pas de surcharge), cependant ils peuvent également montrer la différence entre le remplacement d'une fonction de l'utilisateur et une méthode:
Surcharge Exemple
Bien que la surcharge de paradigme n'est pas entièrement pris en charge par PHP identique (ou très similaire) effet peut être obtenu avec les paramètres par défaut(s) (comme quelqu'un l'a mentionné avant).
Si vous définissez votre fonction comme ceci:
Lorsque vous appelez cette fonction comme:
vous obtiendrez une fonctionnalité (#1), mais si vous l'appelez, avec comme paramètre:
vous aurez une autre fonctionnalité (#2). C'est l'effet de la surcharge des fonctionnalités différentes selon la fonction du paramètre d'entrée(s).
Je sais, quelqu'un va demander maintenant les fonctionnalités que l'on va faire si il/elle appelle cette fonction comme f(0).
Je tiens à souligner ici que la Surcharge en PHP a un sens complètement différent par rapport à d'autres langages de programmation. Beaucoup de gens ont dit que la surcharge n'est pas pris en charge en PHP et par la définition traditionnelle de la surcharge, oui, cette fonctionnalité n'est pas disponible expressément.
Cependant, la définition correcte de la surcharge en PHP est complètement différent.
En PHP surcharge se réfère à créer dynamiquement des propriétés et des méthodes à l'aide de méthodes magiques comme __set() et __get(). Ces méthodes de surcharge sont invoqués lors de l'interaction avec des méthodes ou des propriétés qui ne sont pas accessibles ou non déclaré.
Voici un lien à partir du manuel PHP : http://www.php.net/manual/en/language.oop5.overloading.php
Il y a quelques différences entre la surcharge de fonctions & si bien que les deux contiennent le même nom de fonction.En surcharge ,entre le même nom fonctions contiennent différents type d'argument ou le type de retour, Tels que:
"function ajouter (int a,int b)" & "function ajouter(float a,float b);
Ici, la méthode add() de la fonction est surchargé.
Dans le cas de l'annulation à la fois l'argument et le nom de la fonction sont les mêmes.Il est généralement trouvé dans la succession ou dans les traits.Nous devons suivre certaines tactiques d'introduire, quelle fonction exécuter maintenant.
Donc, En remplaçant le programmeur suit quelques tactiques pour exécuter la fonction désirée où dans le surcharger le programme peut automatiquement identifier la fonction de votre choix...Merci!
Surcharge: Dans le monde Réel, la surcharge signifie que l'attribution quelques trucs supplémentaires à quelqu'un. Comme dans le monde réel de la Surcharge en PHP moyens d'appel à des fonctions supplémentaires. Dans l'autre sens, Vous pouvez dire qu'il ont slimier de fonction avec un paramètre différent.En PHP, vous pouvez utiliser la surcharge avec des fonctions magiques par exemple, __get, __set, __call etc.
Exemple de Surcharge:
Majeur : En programmation orientée objet primordial est de remplacer la méthode parent dans la classe enfant.En substituant vous pouvez re-déclarer parent méthode de classe dans la classe enfant. Donc, en gros, le but primordial est de modifier le comportement de votre parent méthode de classe.
Exemple de primordial :
Méthode de surcharge se produit lorsque deux ou plusieurs méthodes avec le même nom de méthode, mais un nombre différent de paramètres dans une seule classe.
PHP ne supporte pas la surcharge de méthode.
La redéfinition de méthode signifie que les deux méthodes avec le même nom de méthode et le même nombre de paramètres dans deux classes différentes signifie classe parent et de l'enfant de la classe.
PHP 5.x.x ne prend pas en charge la surcharge c'est pourquoi le PHP n'est pas entièrement de la programmation orientée objet.