No PHP, não podemos implementar diretamente a sobrecarga do método por métodos com o mesmo nome de método e assinaturas diferentes, porque o PHP é um tipo de dados fraco e não pode distinguir bem as assinaturas. No entanto, você pode usar o método __call () nas classes PHP para implementar a sobrecarga do método. Quando um método que não existe em uma classe é chamado, o método __call () é chamado automaticamente, que está na forma de __call ($ nome, $ argumentos) em que $ nome é o nome do método e $ argumentos é um parâmetro de tipo de matriz.
O exemplo a seguir é usar a sobrecarga do método PHP para criar dinamicamente métodos GET e Set. (Na programação orientada a objetos, as propriedades de uma classe serão atribuídas usando Get and Set, mas se houver muitas propriedades em uma classe, como 30, se não usarmos sobrecarga de métodos, precisamos escrever 30 métodos de conjunto e 30 métodos de obtenção e escrevê-los lentamente por conta própria ...)
A cópia do código é a seguinte:
<? php
pessoa de classe
{
Nome privado $;
Age de $ privado;
endereço $ privado;
Escola privada $;
Private $ Phonenum;
Função pública __call ($ método, $ args)
{
$ perfix = strTolower (substr ($ método, 0,3));
$ propriedade = strTolower (substr ($ método, 3));
if (vazio ($ perfix) || vazio ($ propriedade))
{
retornar;
}
if ($ perfix == "get" && isset ($ this-> $ propriedade))
{
Retornar $ this-> $ propriedade;
}
if ($ perfix == "set")
{
$ this-> $ propriedade = $ args [0];
}
}
}
$ p = nova pessoa ();
$ 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';
?>
Esse problema é facilmente resolvido pelo método __call (), em vez de escrever um método GET Set para cada propriedade.