Dans PHP, nous ne pouvons pas implémenter directement la surcharge de méthode par des méthodes avec le même nom de méthode et différentes signatures, car PHP est un type de données faible et ne peut pas bien distinguer les signatures. Cependant, vous pouvez utiliser la méthode __Call () dans les classes PHP pour implémenter la surcharge de méthode. Lorsqu'une méthode qui n'existe pas dans une classe est appelée, la méthode __Call () est automatiquement appelée, qui se présente sous la forme de __Call ($ name, $ arguments) où $ Name est le nom de la méthode et que $ arguments est un paramètre de type de tableau.
L'exemple suivant est d'utiliser la surcharge de méthode PHP pour créer dynamiquement des méthodes GET et définir. (Dans la programmation orientée objet, les propriétés d'une classe seront attribuées à l'aide de Get and Set, mais s'il y a trop de propriétés dans une classe, telles que 30, alors si nous n'utilisons pas de surcharge de méthode, nous devons écrire 30 méthodes de définition et 30 méthodes GET, et les écrire lentement sur nous-mêmes ...)
La copie de code est la suivante:
<? Php
classe
{
Nom $ privé;
$ privé;
adresse privée $;
École privée $;
Private $ phonenum;
Fonction publique __ calent ($ Method, $ args)
{
$ pergix = strtolower (substr ($ méthode, 0,3));
$ Property = strtolower (substr ($ Method, 3));
if (vide ($ pergix) || vide ($ propriété)))
{
retour;
}
if ($ pergix == "get" && isset ($ this -> $ propriété)))
{
Retour $ this -> $ propriété;
}
if ($ pergixe == "set")
{
$ this -> $ property = $ args [0];
}
}
}
$ p = new personne ();
$ p-> setName ('lvcy');
$ P-> Setage (23);
$ p-> setaddress (chengdu);
$ p-> setschool ('uestc');
$ p-> setphonenum ('123456');
echo $ p-> getName (). '// n';
echo $ p-> getage (). '// n';
echo $ p-> getAddress (). '// n';
echo $ p-> getSchool (). '// n';
?>
Ce problème est facilement résolu par la méthode __Call (), plutôt que d'écrire une méthode GET SET pour chaque propriété.