Usando __callStatic() en PHP 7

La magia __callStatic () es casi idéntica al método __call(). Cuando el método __call() está vinculado al contexto del objeto, el método __callStatic() está vinculado al contexto estático, lo que significa que este método se activa al invocar métodos inaccesibles a través del operador de resolución de alcance (: :).

El método acepta dos parámetros según la siguiente sinopsis:

public static mixed __callStatic (string $name, array $arguments)

Observe el uso del modificador de acceso estático en la declaración del método que requiere el contexto estático sobre el cual opera este método. El siguiente ejemplo demuestra el uso del método __callStatic() en el contexto estático:

<?php
class User
{
public static function __callStatic($name, $arguments)
{
echo '__callStatic => ' . $name . ': ' . implode(', ', $arguments)
. PHP_EOL;
}
public static function bonus($amount)
{
echo 'bonus: ' . $amount . PHP_EOL;
}
}

El código anterior producirá el siguiente resultado:

User::hello('John', 34);
User::bonus(560.00);
User::salary(4200.00);

La clase User misma declaró solo los métodos __callStatic() y bonus(). La clase User intenta llamar a los métodos estáticos hello(), bonus() y salary(). Esto significa efectivamente que la clase está tratando de llamar a dos métodos faltantes: hello() y salary(). El método __callStatic() inicia los dos métodos que faltan, produciendo así el siguiente resultado:

__callStatic => hello: John, 34
bonus: 560
__callStatic => salary: 4200

En la programación OO, el contexto estático es menos frecuente que el contexto del objeto, lo que hace que el método __callStatic() se use con menos frecuencia que el método __call().

Comparte