É possível "escapar" de um nome de método no PHP, poder ter um nome de método que coloque com uma palavra -chave reservada?
-
21-09-2019 - |
Pergunta
Estou fazendo MVC no PHP e gostaria de ter um método List () dentro do meu controlador, para ter o URL/entidade/list/parent_id, para mostrar todo o "X" que pertence a esse pai.
No entanto, não posso ter um método chamado List (), pois é uma palavra -chave reservada ao PHP.
No VB.NET, por exemplo, se eu precisar ter algo com um nome que se choca com uma palavra -chave reservada, posso envolvê -lo em [Reservverv_Name].
No SQL, você pode fazer a mesma coisa.
Em MySQL, você usa o backtick `
Existe alguma sintaxe no PHP que especifica "tratar isso como um identificador, não como uma palavra -chave"?
(Nota: eu sei que posso usar rotas para fazer isso sem ter um método List (). Eu também posso simplesmente chamar a ação de outra coisa. A questão é se o PHP fornece esse tipo de fuga)
Solução
Com nomes de variáveis, você pode usar os sinais de suporte:
${'array'} = "test";
echo ${'array'};
Mas o PHP não fornece um método para escapar nomes de funções.
Se você deseja uma maneira 'definida pelo usuário' de contornar isso, confira este comentário:
Outras dicas
Você pode usar __call()
método para invocar privado ou público _list()
método que implementa sua funcionalidade.
/**
* This line for code assistance
* @method array list() list($par1, $par2) Returns list of something.
*/
class Foo
{
public function __call($name, $args)
{
if ($name == 'list') {
return call_user_func_array(array($this, '_list'), $args);
}
throw new Exception('Unknown method ' . $name . ' in class ' . get_class($this));
}
private function _list($par1, $par2, ...)
{
//your implementation here
return array();
}
}