Pular para o conteúdo

Funções com nomes variáveis em PHP, isso existe sim!

Dica publicada em PHP / Avançado
Celso Goya Oki
Hits: 11.410 Categoria: PHP Subcategoria: Avançado
  • Indicar
  • Impressora
  • Denunciar

Funções com nomes variáveis em PHP, isso existe sim!

Bom, este é mais um desses recursos do PHP que tendem à paranormalidade, mas vamos lá. É possível sim, criar funções ou então sobrecarregar funções com nomes variáveis.

Para fazer isso veja o seguinte código:

// Esta é uma função simples
function teste($texto = "") {
echo($texto);
}

// Mais outra função simples
function abusandodophp($texto = "") {
return strlen($texto);
}

// Este é o nome da função que desejamos executar
$nomefuncao = "teste";

// Agora é só fazer de conta que a variável é a própria função e pronto
$nomefuncao("A Mágica está funcionando");
$nomefuncao("
");

// Vamos mudar a função que queremos executar
$nomefuncao = \"abusandodophp\";

// Agora vamos executá-la dentro de um comando que usa a precedência, ou seja, precisa ser executado de dentro para fora...
echo ($nomefuncao("Chutando o balde"));

$nomefuncao("
");

teste("Jeito normal");

[]'s
Celso Goya
moinho.net

Java Web Start

Red Hat 10 ou Fedora Project?

xSane :: Acabe já com a insanidade do seu scanner

Vim com a syntax colorida para PHP, C++, Pascal, etc

Mortal Kombat para Linux

Tudo em Um - Site pessoal sobre PHP, HTML, CSS etc

Imprimindo dados enviados via PHP

Documentação do CodeIgniter em português

Váriaveis globais no PHP

Plugin com controle de acesso para CakePHP 3

#1 Comentário enviado por TiagoSouza em 27/02/2012 - 14:30h
Doidera, mas não tem utilidade :D
#2 Comentário enviado por removido em 02/08/2014 - 20:12h
rsrs, isso ae todo mundo que programa em PHP conhece...

É o mesmo que:

<?php

class Teste{

public function prints($message)
{
echo $message;
}
}

function newInstance($class)
{
return new $class();
}

$Teste = newInstance("Teste");
$Teste->prints("Hello World!\r\n");



$myFunction = function($message)
{
echo $message;
};

$myFunction("xd\r\n");
?>

Contribuir com comentário

Entre na sua conta para comentar.