La sobrecarga tal y como se conoce en otros lenguajes de programación (Java por ejemplo) no existe en PHP, pero se puede simular. En la página del manual lo puedes ver:
Código HTML:
http://es.php.net/manual/es/language.oop5.overloading.php
No siempre se pueden sobrecargar métodos. En un proyecto que estoy desarrollando quería sobrecargar un método que se hereda de una clase abstracta.
Si intentas sobrecargar como se describe en el manual obtienes un error que te indica que la clase que hereda tiene un método abstracto, por lo que o lo defines o declaras la clase como abstracta. Si lo defines, de nada te sirve usar
__call. Si no lo defines, no puedes instanciar la clase.
Mejor se ve con el código delante:
Código PHP:
abstract class claseAbstracta{
public abstract function metodo($arg1);
}
class claseEjemplo extends claseAbstracta{
public function metodo($arg1){
// ...
}
}
Para este caso la única solución que he encontrado ha sido pasar los parámetros a través del constructor o de otros métodos y comprobar dentro del método a sobrecargar si están definidos o no. Una solución poco elegante, pero la única que se me ocurre.
Si estoy en un error, me encantaría que me sacaseis de él.