Sobrecarga de métodos en PHP

Subodh Poudel 30 enero 2023
  1. Sobrecarga de métodos en PHP
  2. Utilice el método mágico __call() para implementar la sobrecarga de métodos en PHP
  3. Utilice el método mágico __callStatic() para implementar la sobrecarga de métodos en PHP
Sobrecarga de métodos en PHP

Este artículo presentará el concepto de sobrecarga de métodos en PHP junto con ejemplos.

Sobrecarga de métodos en PHP

La sobrecarga de métodos es un concepto en OOP donde existen múltiples métodos del mismo nombre dentro de una clase que acepta una cantidad diferente de parámetros o tipos de datos. Por ejemplo, un método add() se puede sobrecargar definiéndolo dos veces; el primero toma dos parámetros, mientras que el segundo toma tres parámetros.

Incluso podemos sobrecargar la función proporcionando argumentos enteros en un método mientras proporcionamos argumentos de punto flotante en el otro. Este tipo de sobrecarga es popular en lenguajes como Java y C++.

Sin embargo, el concepto de sobrecarga de métodos es bastante diferente en PHP. La sobrecarga de métodos es el proceso de creación dinámica de un método con la ayuda de métodos mágicos.

Podemos crear métodos que no existen dentro del alcance de una clase. Funciona tanto para métodos de clase como para métodos estáticos.

Los métodos mágicos __call() y __callStatic() se utilizan para sobrecargar los métodos dinámicos. Está claro por el nombre que el método __call() se usa para métodos de clase, y el método callStatic() se usa para métodos estáticos.

La sintaxis de estos métodos se muestra a continuación.

__call($name, $arguments){
//function  body
}

Aquí, $name es el nombre del método dinámico y $arguments es una matriz que contiene los argumentos del método dinámico. Dentro del método, podemos acceder a los argumentos usando los índices en la matriz $arguments.

Utilice el método mágico __call() para implementar la sobrecarga de métodos en PHP

Podemos usar el método __call() para crear un método en PHP dinámicamente. El método se ejecutará cuando invoquemos un método aún no creado en el contexto del objeto.

El proceso se llama sobrecarga de métodos en PHP.

Por ejemplo, cree una clase Universidad y el método __call() dentro de ella. Nombra los parámetros $name y $arguments en este método.

Dentro del método, imprima la variable $name y los elementos de la matriz $argumentos. Fuera de la clase, crea un objeto $student de la clase University.

A continuación, invoque el método student_info() con el objeto $student. Pase los argumentos 001 y Biswash en el método.

Código de ejemplo:

<?php
class University{
    public function __call($name, $arguments){
        echo "inside the method: ".$name."<br>";
        echo "id:".$arguments[0]."<br>";
        echo "name:".$arguments[1]."<br>";
        }
}

$student = new University;
$student->student_info(001,'Biswash');
?>

Entendamos el flujo del ejemplo anterior.

Cuando invocamos el método student_info() con los parámetros, el programa no encuentra el método en la clase Universidad. Pero, el método __call() existe en la clase, por lo que se ejecuta esta función.

El parámetro $name en el método contiene el método student_info(), y el parámetro $arguments contiene los argumentos 001 y Biswash como Array ([0] => 1 [1] => Biswash ). Los parámetros se imprimen dentro del método __call().

Producción :

inside the method: student_info
id:1
name:Biswash

De esta forma, podemos usar el método mágico __call() para lograr la sobrecarga de métodos en el contexto del objeto en PHP.

Utilice el método mágico __callStatic() para implementar la sobrecarga de métodos en PHP

También podemos usar la función de sobrecarga de métodos en el contexto estático en PHP. Debemos usar el método mágico __callStatic().

La definición de función del método es similar a la del método __call. Sin embargo, como lo usamos en el contexto estático, el método debe ser estático.

Dado que es un contexto estático, no necesitamos crear una instancia de la clase. Podemos llamar directamente al método que se creará dinámicamente usando el operador :: de la clase.

Por ejemplo, cree un método __callStatic() dentro de la clase Universidad como hicimos con el método __call(). No olvide escribir la palabra clave static al definir el método.

Complete los parámetros y el cuerpo del método como en el método anterior. Fuera de la clase, invoque un método professor_info utilizando el operador :: de la clase como Universidad::professor_info().

Proporcione los argumentos de su elección en el método.

Código de ejemplo:

<?php
class University{
    public static function __callStatic($name, $arguments){
        echo "inside the method: ".$name."<br>";
        echo "id:".$arguments[0]."<br>";
        echo "name:".$arguments[1]."<br>";
    }
}

University::professor_info(0010,'Professor Jack ');
?>

Producción :

inside the method: professor_info
id:8
name:Professor Jack

De esta forma, podemos sobrecargar un método estático utilizando el método mágico __callStatic() de PHP.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn