Gostaria de saber se um dos principais recursos de uma linguagem de programação é ter a capacidade de sobrecarregar funções por meio de argumentos. Eu acho que é essencial no contexto da programação orientada a objetos.
É intencionalmente deixado para trás e não é permitido? Ou sobrecarregar não é uma boa prática?
php
method-overloading
user1179459
fonte
fonte
Respostas:
Quem disse que o PHP não suporta sobrecarga de funções? !!!
Na verdade, o PHP suporta sobrecarga de funções, mas de uma maneira diferente. Os recursos de sobrecarga do PHP são diferentes dos de Java:
Faça o check-out dos seguintes blocos de código.
Função para encontrar a soma dos n números:
Função para adicionar dois números ou concatenar duas cadeias:
Abordagem Orientada a Objetos, incluindo Sobrecarga de Método:
Ref: http://php.net/manual/en/language.oop5.overloading.php
Em PHP, sobrecarregando significa que você pode adicionar membros de objetos em tempo de execução, através da implementação de alguns dos métodos mágicos como
__set
,__get
,__call
etc.fonte
findSum(10, "steve", { 86, "2012-09-20" });
. Uma verdadeira sobrecarga permitiria novos parâmetros de diferentes tipos.Não é um suporte completo à "Sobrecarga tradicional", apenas parcial .
Nota: a segunda parte desta definição é geralmente associada a linguagens de programação com estaticamente que fazem verificação de tipo e / ou verificação de arity , para escolher a declaração correta. O PHP não é uma linguagem estaticamente digitada, é dinâmica e usa digitação fraca .
SUPORTE PHP :
SIM, fornece a capacidade de chamar vários métodos com o mesmo nome, mas com quantidades diferentes . Veja func_get_args e resposta @rajukoyilandy, podemos usar
f(x)
ef(x,y)
.SIM, fornece a capacidade de chamar vários métodos com o mesmo nome, mas com tipos diferentes . Veja o uso interno do gettype no método.
NÃO fornece a capacidade de declarar vários métodos com o mesmo nome, mas com quantidades diferentes . Isso ocorre porque podemos ligar
f(x)
ef(x,y)
com a mesmaf
declaração.NÃO fornece a capacidade de declarar vários métodos com o mesmo nome, mas com tipos diferentes . Isso ocorre porque o compilador PHP deve interpretar
f($integer,$string)
como a mesma função quef($string,$integer)
.Veja também a documentação de sobrecarga do PHP5 para obter as explicações sobre "sobrecarga não tradicional".
fonte