Sobrecarga en PHP

¿Qué es la sobrecarga de funciones? La sobrecarga de funciones es la capacidad de crear múltiples funciones del mismo nombre con diferentes implementaciones. ¿Sobrecarga de funciones en PHP?La sobrecarga de funciones en PHP se usa para crear propiedades y métodos dinámicamente. Estas entidades dinámicas se procesan mediante métodos mágicos que se pueden usar en una clase para varios tipos de acciones. La sobrecarga de funciones contiene el mismo nombre de función y esa función realiza una tarea diferente según la cantidad de argumentos. Por ejemplo, encuentre el área de ciertas formas donde se da el radio, luego debería devolver el área del círculo si se dan la altura y el ancho, luego debería dar el área del rectángulo y otros. Al igual que otros lenguajes OOP, la sobrecarga de funciones no se puede realizar mediante un enfoque nativo. En PHP, la sobrecarga de funciones se realiza con la ayuda de la función mágica __call(). Esta función toma el nombre de la función y los argumentos. 

Propiedad y Reglas de sobrecarga en PHP:

  • Todos los métodos de sobrecarga deben definirse como públicos.
  • Luego de crear el objeto para una clase, podemos acceder a un conjunto de entidades que son propiedades o métodos no definidos dentro del alcance de la clase.
  • Se dice que tales entidades son propiedades o métodos sobrecargados, y el proceso se denomina sobrecarga.
  • Para trabajar con estas propiedades o funciones sobrecargadas, se utilizan métodos mágicos de PHP.
  • La mayoría de los métodos mágicos se activarán en el contexto del objeto, excepto el método __callStatic() que se usa en un contexto estático.

Tipos de sobrecarga en PHP: Hay dos tipos de sobrecarga en PHP.

  • Sobrecarga de propiedad
  • Sobrecarga de métodos

Sobrecarga de propiedades: la sobrecarga de propiedades de PHP se utiliza para crear propiedades dinámicas en el contexto del objeto. Para crear estas propiedades no se necesita una línea de código separada. Una propiedad asociada con una instancia de clase, y si no se declara dentro del alcance de la clase, se considera como propiedad sobrecargada. Las siguientes operaciones se realizan con propiedades sobrecargadas en PHP.

  • Establecer y obtener propiedades sobrecargadas.
  • Evaluación de la configuración de propiedades sobrecargadas.
  • Deshacer dicha configuración de propiedades.

Antes de realizar las operaciones, debemos definir métodos mágicos apropiados. que son,

  • __set(): activado al inicializar propiedades sobrecargadas.
  • __get(): activado al usar propiedades sobrecargadas con sentencias de impresión de PHP.
  • __isset(): este método mágico se invoca cuando verificamos propiedades sobrecargadas con la función isset()
  • __unset(): De manera similar, esta función se invocará al usar PHP unset() para propiedades sobrecargadas.

Ejemplo: 

PHP

<?php
 
//
class GFG {
     
    // Location of overloading data
    private $data = array();
 
    // Overloading not used here
    public $declared = 1;
 
    // Overloading used when accessed
    // outside the class
    private $hidden = 2;
     
    // Function definition
    public function __set($name, $value) {
        echo "Setting '$name' to '$value'\n";
        $this->data[$name] = $value;
    }
     
    // Function definition
    public function __get($name) {
        echo "Getting '$name: ";
        if (array_key_exists($name, $this->data)) {
            return $this->data[$name];
        }
 
        $trace = debug_backtrace();
         
        return null;
    }
 
    // Function definition
    public function __isset($name) {
        echo "Is '$name' set?\n";
        return isset($this->data[$name]);
    }
 
    // Definition of __unset function
    public function __unset($name) {
        echo "Unsetting '$name'\n";
        unset($this->data[$name]);
    }
 
    // getHidden function definition
    public function getHidden() {
        return $this->hidden;
    }
}
 
// Create an object
$obj = new GFG;
 
// Set value 1 to the object variable
$obj->a = 1;
echo $obj->a . "\n";
 
// Use isset function to check
// 'a' is set or not
var_dump(isset($obj->a));
 
// Unset 'a'
unset($obj->a);
 
var_dump(isset($obj->a));
 
echo $obj->declared . "\n\n";
 
echo "Private property are visible inside the class ";
echo $obj->getHidden() . "\n\n";
 
echo "Private property are not visible outside of class\n";
echo $obj->hidden . "\n";
 
?>
Producción:

Setting 'a' to '1'
Getting 'a: 1
Is 'a' set?
bool(true)
Unsetting 'a'
Is 'a' set?
bool(false)
1

Private property are visible inside the class 2

Private property are not visible outside of class
Getting 'hidden:

Sobrecarga de métodos: es un tipo de sobrecarga para crear métodos dinámicos que no están declarados dentro del alcance de la clase. La sobrecarga de métodos PHP también desenstring métodos mágicos dedicados al propósito apropiado. A diferencia de la sobrecarga de propiedades, la sobrecarga de métodos de PHP permite llamar a funciones tanto en el objeto como en el contexto estático. Las funciones mágicas relacionadas son,

  • __call(): se activa al invocar métodos sobrecargados en el contexto del objeto.
  • __callStatic(): se activa al invocar métodos sobrecargados en un contexto estático.

Ejemplo: 

PHP

<?php
class GFG {
     
     
    public function __call($name, $arguments) {
         
        echo "Calling object method '$name' "
            . implode(', ', $arguments). "\n";
    }
 
     
    public static function __callStatic($name, $arguments) {
         
        echo "Calling static method '$name' "
            . implode(', ', $arguments). "\n";
    }
}
 
// Create new object
$obj = new GFG;
 
$obj->runTest('in object context');
 
GFG::runTest('in static context');
 
?>
Producción:

Calling object method 'runTest' in object context
Calling static method 'runTest' in static context

Publicación traducida automáticamente

Artículo escrito por A_K_Mishra 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 *