¿Cómo implementar la sobrecarga de métodos en PHP?

PHP significa preprocesador de hipertexto, es un popular lenguaje de secuencias de comandos de propósito general que se utiliza principalmente en el desarrollo web. Es rápido, flexible y pragmático, y las últimas versiones de PHP están orientadas a objetos, lo que significa que puede escribir clases, usar herencia, polimorfismo, abstracción de datos, encapsulación, constructor, destructor y sobrecarga (método y función).

Sobrecarga : la sobrecarga es un concepto orientado a objetos en el que dos o más métodos tienen el mismo nombre de método con diferentes argumentos o parámetros (obligatorio) y tipo de retorno (no necesario). Se puede hacer como sobrecarga de constructores, sobrecarga de operadores y sobrecarga de métodos.
En este artículo, implementaremos la sobrecarga de métodos en PHP.

Sobrecarga de métodos en PHP:

Ejemplo: el siguiente código mostrará algún error. 

PHP

<?php
  
class GFG {
    function multiply($var1){
        return $var1;
    }
      
    function multiply($var1,$var2){
        return $var1 * $var1 ;
    }
}
  
$ob = new GFG();
$ob->multiply(3,6);
?>

Salida: el error se muestra porque estamos redeclarando la función multiplicar() en la clase GFG.

PHP Fatal error:  Cannot redeclare GFG::multiply()

Nota: En otros lenguajes de programación como C++, esto funcionará para métodos sobrecargados. Para lograr la sobrecarga de métodos en PHP, tenemos que utilizar los métodos mágicos de PHP __call() para lograr la sobrecarga de métodos.

__call(): en PHP, si una clase ejecuta __call() , y si se llama a un objeto de esa clase con un método que no existe, se llama a __call() en lugar de ese método. El siguiente código demuestra esto.

Ejemplo:

PHP

<?php
  
class GFG {  
    public function __call($member, $arguments) {
        $numberOfArguments = count($arguments);
  
        if (method_exists($this, $function = $member.$numberOfArguments)) {
            call_user_func_array(array($this, $function), $arguments);
        }
    }
    
    private function multiply($argument1) {
        echo $argument1;
    }
  
    private function multiply2($argument1, $argument2) {
        echo $argument1 * $argument2;
    }
}
  
$class = new GFG;
$class->multiply(2); 
$class->multiply(5, 7);
  
?>

Producción:

35

Publicación traducida automáticamente

Artículo escrito por atul07 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *