Sobrecarga de métodos en PHP
- Sobrecarga de métodos en PHP
-
Utilice el método mágico
__call()
para implementar la sobrecarga de métodos en PHP -
Utilice el método mágico
__callStatic()
para implementar la 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 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