Cita:
Iniciado por jor_0203 y tu que piensas de lo que dice Italico76
estas totalmente de acuerdo
Lo que dice Italico76 es, en general, cierto.Mi pega no era sobre "el qué", sino "el por qué"
Lo que ocurre es que el propio manual de PHP llama "sobrecarga" a cosas que no lo son, pero se pueden utilizar para simularla.
En el link que daba @guardarmicorreo,
https://php.net/manual/es/language.oop5.overloading.php, se llama "overload" a algo que no lo es (como también opina el primer comentario de usuarios que hay en esa página). Los métodos mágicos te permiten simularlo:
Código PHP:
Ver originalclass A
{
function __call($func,$args)
{
}
private function overloaded_0()
{
echo "No args";
}
private function overloaded_1($arg1)
{
echo "One arg";
}
private function overloaded_2($arg1,$arg2)
{
echo "Two args";
}
}
$c=new A();
$c->overloaded(); // "No args"
$c->overloaded(1); // "One arg"
$c->overloaded(1,2); // "Two args"
De la misma forma se puede hacer con tipos de dato:
Código PHP:
Ver originalclass A
{
function __call($func,$args)
{
if($n>0)
{
}
}
private function overloaded()
{
echo "No args";
}
private function overloaded_integer($i)
{
echo "Received integer";
}
private function overloaded_boolean_array($b,$a)
{
echo "Received boolean and array";
}
private function overloaded_object_double($o,$d)
{
echo "Received object and double";
}
}
$c=new A();
$c->overloaded(); // No args
$c->overloaded(1); // Received integer
$c->overloaded(false,array(1,2,3)); // Received boolean and array $c->overloaded(new A(),1.5); // Received object and double
Significa esto que PHP soporta polimorfismo? No, significa que ese código simula polimorfismo.