Em JavaScript, você pode definir funções anônimas que são executadas imediatamente:
(function () { /* do something */ })()
Você pode fazer algo assim em PHP?
php
javascript
function
Emanuil Rusev
fonte
fonte
call_user_func(function(){/* stuff */})
faço?Respostas:
Para PHP7: veja a resposta de Yasuo Ohgaki :
(function() {echo 'Hi';})();
Para versões anteriores: a única maneira de executá-los imediatamente que consigo pensar é
fonte
call_user_func
Em
PHP 7
é fazer o mesmo em javascriptO resultado é:
fonte
Bem, é claro que você pode usar
call_user_func
, mas ainda há outra alternativa bem simples:fonte
run
sua função em alguma outra parte do código porque não há nenhum identificador para sua função existente após a linha que a executa imediatamente.run()
é executar imediatamente a função não nomeada transmitida a ele. O mesmo quecall_user_func()
, apenas nenhum parâmetro é passado.$f();
e pode ser mais rápido se o mecanismo que você usa não otimiza para o caso especial em quecall_user_func
tem apenas um argumento de função. Isso ocorre porquecall_user_func
suporta a passagem de vários parâmetros e seu primeiro argumento suporta uma string como um argumento ou uma função. Dito isso, secall_user_func
for muito legível, eu não usariarun
, a menos que o código estivesse localizado em algum lugar na parte inferior da pirâmide .run
ecall_user_func
.call_user_func
tem uma desvantagem inerente quando comparado arun
porquerun
faz apenas uma coisa, enquantocall_user_func
oferece suporte a recursos adicionais, além de fazer o querun
faz. Você pode tentar um teste de loop rápido ( por exemplo ) para ver qual é mais rápido em seu motor.Este é o mais simples para PHP 7.0 ou posterior.
Significa criar um encerramento e, em seguida, chamá-lo como função seguindo "()". Funciona como JS graças à ordem de avaliação de variável uniforme.
https://3v4l.org/06EL3
fonte
fonte
Observação: uma resposta aceita está bem, mas leva 1,41x mais tempo (41% mais lento) do que declarar uma função e chamá-la em duas linhas.
[Sei que não é realmente uma resposta nova, mas achei valioso adicioná-la em algum lugar para os visitantes.]
Detalhes:
Resultados:
fonte
Tentei desta forma, mas é mais prolixo do que a resposta principal, usando qualquer operador (ou função) que permite definir a função primeiro:
fonte
$hack = function(){...}; $hack()
?Esta não é uma resposta direta, mas uma solução alternativa. Usando PHP> = 7. Definindo uma classe anônima com um método nomeado e construindo a classe e chamando o método imediatamente.
fonte
Não executado imediatamente, mas perto de;)
fonte