Comandos 'printf' e 'sprintf' em PHP e WordPress
PermalinkNo último artigo sugeriram-me falar sobre as funções printf e sprintf que são utilizadas em massa no Wordpress e é isso que vou fazer! Vamos analisar cada uma das funções.
Vou começar por analisar as duas funções em separado, explicando para que servem e dando alguns exemplos.
printf
O nome desta função quer dizer print formatted, ou seja, “imprimir dados formatados”. Abaixo encontra um exemplo mais simples:
printf("Olá mundo!");
//Olá mundo!
E agora você pergunta-me: que utilidade tem essa função se podemos fazer o mesmo com echo
ou print
?
É aqui que está função se destaca. Compare as seguintes impressões, todas vão imprimir o mesmo.
<?php
$foo = "Henrique";
$bar = "14";
$site = "COXPE";
//Chamo-me Henrique, tenho 14 anos e estou a navegar no COXPE.
echo 'Chamo-me ' . $foo . ', tenho ' . $bar . ' anos e estou a navegar no ' . $site . '.';
echo "Chamo-me {$foo} tenho {$bar} anos e estou a navegar no {$site}.";
printf("Chamo-me %s e tenho %d anos e estou a navegar no %s.",
$foo, $bar, $site);
Se repararmos, das três, a última é a que tem uma maior legibilidade, tal como o leitor Carlos Santos tinha mencionado.
Como pode ver, existe ali um %s
e um %d
que são substituídos pelas variáveis que coloco depois. Existem vários “por centos”:
%
→ imprime um sinal “%”%b
→ permite o envio de um número inteiro que será imprimido em binário%c
→ permite o envio de um número inteiro e será imprimido o caractere ASCII correspondente.%d
→ permite o envio de um número inteiro e imprime-o%e
→ o argumento é tratado como notação científica%E
→ igual ao anterior porém o “e” tem que ser maiúsculo (“12E5” em vez de “12e5”)%f
→ o argumento é tratado como float%g
→ atalho para%e
e%f
%G
→ atalho para%E
e%f
Estes são os mais utilizados porém podem ver mais aqui. Assim, para utilizar esta função, seguimos a seguinte sintaxe:
printf($formato[, $restantesArgumentos...])
O $formato é a string que contém a frase a ser imprimida com as diversas diretivas que podem ser 0 ou mais. É indiferente.
Os restantes argumentos são os dados que são para ser enviados para essas diretivas por ordem de aparecimento na string.
sprintf
A única diferença entre esta função e a printf
é que esta retorna a string formatada e printf
imprime a string formatada.
WordPress, traduções e estas funções…
O WordPress usa estas funções em massa juntamente com o sistema de tradução tornando esta função extremamente potente.
Este CMS usa o sistema Gettext para traduzir o conteúdo que nos é visível. Agora não vamos entrar em detalhes sobre a ativação deste sistema (se tiverem qualquer dúvida coloquem).
O WordPress deve utilizar este sistema também pela simplicidade de leitura visto que os comandos de tradução do Gettext são um quanto “complicados” de ler.
<?php
//Exemplo de "printf" utilizado pelo WordPress
printf( __( 'Ready to publish your first post? <a href="%1$s">Get started here</a>.', 'twentyfourteen' ), admin_url( 'post-new.php' ) );
//Em Echo
$url = admin_url( 'post-new.php' );
echo __( "Ready to publish your first post? <a href="{$url}">Get started here</a>.", 'twentyfourteen' );
A forma que coloquei com echo poderia variar. Mas, como pode visualizar, o printf é mais simples de ler.
Vou deixar esta parte para um outro artigo ;) Deixo já nos rascunhos. Em breve poderei fazer um artigo sobre o Gettext, como ativar e usar! =D
A partir de segunda-feira, a frequência de lançamento de artigos irá diminuir porque a escola vai recomeçar. Continuarei a lançar a rubrica semanal com o Pplware e também no Pplware Kids. Isto não quer dizer que deixarei de escrever para o COXPE. Sempre que puder, virei aqui :) Obrigado pela compreensão.