Resumo : neste tutorial, você aprenderá sobre o __callStatic()
método mágico do PHP e como usá-lo para tornar seu código mais flexível.
Introdução ao método mágico PHP __callStatic()
PHP invoca o __callStatic()
método quando você invoca um método estático inacessível de uma classe .
O seguinte mostra a sintaxe do __callStatic()
método:
public static __callStatic(string $name, array $arguments): mixed
Linguagem de código: PHP ( php )
O __callStatic()
tem dois parâmetros: $name
e $arguments
.
Quando você chama um método estático inacessível de uma classe, o PHP invoca automaticamente o __callStatic()
método com os seguintes argumentos:
$name
é o nome do método estático.$arguments
é uma série de argumentos.
Exemplo de método mágico PHP __callStatic()
O exemplo a seguir define uma classe chamada Str
:
<?php
class Str
{
private static $methods = [
'upper' => 'strtoupper',
'lower' => 'strtolower',
'len' => 'strlen'
];
public static function __callStatic(string $method, array $parameters)
{
if (!array_key_exists($method, self::$methods)) {
throw new Exception('The ' . $method . ' is not supported.');
}
return call_user_func_array(self::$methods[$method], $parameters);
}
}
echo Str::lower('Hello') . '<br>';
echo Str::upper('Hello') . '<br>';
echo Str::len('Hello') . '<br>';
Linguagem de código: PHP ( php )
Saída:
hello
HELLO
5
Linguagem de código: PHP ( php )
Como funciona.
A classe Str é uma propriedade estática privada chamada $methods
. É um array que contém o mapeamento do nome do método e das funções de string integradas.
Quando você chama um método estático que não existe na classe Str, o PHP invoca automaticamente o __callStatic()
método mágico.
O __callStatic()
verifica se o nome do método estático é suportado procurando as chaves do $methods
array. Irá lançar uma exceção se o método não estiver nas chaves do $methods
array. Caso contrário, o __callStatic()
método chamará a função de string correspondente.
Resumo
- O
__callStatic()
método mágico é chamado automaticamente quando um método inacessível é invocado.