Recentemente, tive um projeto onde eu precisava fazer algumas cordas / dados básicos fusão (ou seja, de templates) que foi além do PHP cozido-in funções ( sprintf
, str_replace
, preg_replace
, etc.). Embora já existam bibliotecas de modelos fantásticas disponíveis , minhas necessidades eram mínimas e eu queria evitar adicionar um componente maior à base de código, mas ainda assim me deixaria ser DRY.
Depois de alguma pesquisa de desempenho de substituição de cordas , decidi que str_replace
deveria fazer o trabalho pesado … e aqui está o que eu vim:
https://gist.github.com/4372785
Os comentários na essência têm um exemplo mais complexo que mostra as limitações das funções integradas do PHP. Aqui está um exemplo mais simples, apenas para demonstrar o conceito:
$tempData = array(
'name' => 'Joe Smith',
'occupation' => 'Speech Therapist'
);
echo renderTemplate('Hello, my name is %name% and I am a %occupation%.');
// prints: Hello my name is Joe Smith and I am a Speech Therapist.
Novamente, eu não gostaria de escrever um aplicativo completo com este sistema, mas para sites ou pequenos aplicativos que precisam de algumas habilidades de modelagem sob demanda, é uma boa solução de uma função.