En PHP, no podemos implementar directamente la sobrecarga de métodos mediante métodos con el mismo nombre del método y diferentes firmas, porque PHP es un tipo de datos débil y no puede distinguir bien las firmas. Sin embargo, puede usar el método __call () en las clases PHP para implementar la sobrecarga de métodos. Cuando se llama un método que no existe en una clase, el método __call () se llama automáticamente, que se encuentra en forma de __call ($ name, $ argumentos) donde $ name es el nombre del método y $ argumentos es un parámetro de tipo matriz.
El siguiente ejemplo es utilizar la sobrecarga del método PHP para crear dinámicamente métodos GET and Set. (En la programación orientada a objetos, las propiedades en una clase se asignarán utilizando GET y SET, pero si hay demasiadas propiedades en una clase, como 30, entonces, si no usamos sobrecarga de métodos, necesitamos escribir 30 métodos establecidos y 30 métodos Get, y escribirlas lentamente por nuestra cuenta ...)
La copia del código es la siguiente:
<? Php
persona de clase
{
Nombre privado $;
edad privada $ edad;
Dirección privada $;
escuela privada $ escolar;
privado $ fonenum;
función pública __call ($ Método, $ args)
{
$ perfix = strtolower (substr ($ método, 0,3));
$ propiedad = strtolower (substr ($ método, 3));
if (vacía ($ perfix) || vacía ($ propiedad))
{
devolver;
}
if ($ perfix == "get" && isset ($ this-> $ propiedad))
{
devolver $ this-> $ propiedad;
}
if ($ perfix == "set")
{
$ this-> $ propiedad = $ args [0];
}
}
}
$ P = nueva persona ();
$ 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';
?>
Este problema se resuelve fácilmente mediante el método __call (), en lugar de escribir un método Get Set para cada propiedad.