Artigo interessante do gerente de projeto do symfony, Fabien Potencier.
Este cara é demais, olha a análise que ele fez. Não faz grande diferença, mas para quem é programador é interessante, porque é sedutor pensar que o ternary operator é mais rápido, quando na verdade não é, e faz todo o sentido!
http://fabien.potencier.org/article/48/the-php-ternary-operator-fast-or-not
Há!
Mostrando postagens com marcador PHP. Mostrar todas as postagens
Mostrando postagens com marcador PHP. Mostrar todas as postagens
quarta-feira, 10 de agosto de 2011
sexta-feira, 29 de abril de 2011
Função empty do PHP e importância de ler a documentação
Um exemplo rápido que me pegou desprevinido por não ler atentamente a documentação: a função empty do PHP retorna TRUE para um array com um indice de valor nulo.
Ex.: ARRAY[ 0 => null ]
Está certo que eu esperava um array vazio, mas na conversão do xml para a aplicação ele criou este índice. Quando verifiquei o que estava acontecendo, primeiramente imprimindo o valor da variável, achei que o teste deveria retornar TRUE pois zero => null = NADA não é mesmo?
Lendo rapidamente a documentação (no site oficial, SEMPRE) ele afirma que o empty retorna TRUE apenas para um array TOTALMENTE vazio, ou seja:
ARRAY[]. Faz sentido, afinal 0 no array será um índice, e não, NADA.
Por isto, sempre é bom conhecer bem a função que você está utilizando e verificar possíveis outputs que você atribuirá (ou receberá como no meu caso) para as variáveis.
That's it!
Ex.: ARRAY[ 0 => null ]
Está certo que eu esperava um array vazio, mas na conversão do xml para a aplicação ele criou este índice. Quando verifiquei o que estava acontecendo, primeiramente imprimindo o valor da variável, achei que o teste deveria retornar TRUE pois zero => null = NADA não é mesmo?
Lendo rapidamente a documentação (no site oficial, SEMPRE) ele afirma que o empty retorna TRUE apenas para um array TOTALMENTE vazio, ou seja:
ARRAY[]. Faz sentido, afinal 0 no array será um índice, e não, NADA.
Por isto, sempre é bom conhecer bem a função que você está utilizando e verificar possíveis outputs que você atribuirá (ou receberá como no meu caso) para as variáveis.
That's it!
Marcadores:
documentação,
empty(),
função,
PHP,
Programação
quarta-feira, 21 de julho de 2010
Dica: como carregar helpers do Symfony além dos templates
Quem trabalha com Symfony pode aproveitar esta dica muito útil: carregar helpers em qualquer outro lugar além dos templates, como dentro de uma action por exemplo.
Para isso, digite:
sfLoader::loadHelpers(array ('HelperName1', 'HelperName2'));
Pronto!
Há!
Para isso, digite:
sfLoader::loadHelpers(array ('HelperName1', 'HelperName2'));
Pronto!
Há!
Marcadores:
Carregar Helper Symfony,
Helpers,
PHP,
Symfony
sábado, 13 de março de 2010
PHP SOAP: problema com o cache
A extensão SOAP do PHP para lidar com WebServices é muito boa, mas tem um grande problema: ao adicionar um novo método ou mudar sua assinatura causam um problema irritante: o SOAP client retorna uma exception informando que o método não existe!
Ao realizar uma chamada, pode -se passar como parâmetro uma opção chamada "wsdl_cache" e passar uma constante para dizer ao PHP como lidar com o cache do WebService. Até aí tudo bem, se esta opção funcionasse.
Não é o caso. Muita incomodação depois, a única alternativa encontrada foi mudar o nome da Action toda vez que uma assinatura era modificada ou um método adicionado.
O que você precisar fazer, é realizar uma chamada para ajustar a configuração do PHP em runtime ou no php.ini: ini_set('soap.wsdl_cache_enabled', '0');
Desta maneira o cache é definitivamente desabilitado, e você pode desenvolver tranquilamente.
Ufa!
Ao realizar uma chamada, pode -se passar como parâmetro uma opção chamada "wsdl_cache" e passar uma constante para dizer ao PHP como lidar com o cache do WebService. Até aí tudo bem, se esta opção funcionasse.
Não é o caso. Muita incomodação depois, a única alternativa encontrada foi mudar o nome da Action toda vez que uma assinatura era modificada ou um método adicionado.
O que você precisar fazer, é realizar uma chamada para ajustar a configuração do PHP em runtime ou no php.ini: ini_set('soap.wsdl_cache_enabled', '0');
Desta maneira o cache é definitivamente desabilitado, e você pode desenvolver tranquilamente.
Ufa!
Marcadores:
Cache,
Erro,
PHP,
SOAP,
Web Services
quinta-feira, 11 de março de 2010
Web Services Complex Types com SOAP no PHP
Se você trabalha com Web Services e precisa saber como estão estruturados seu complex types, esta dica é extremamente útil.
Aponte o navegador para http://host-do-serviço:porta/action/task?xsd=1
No meu caso, eu tenho um Web Service rodando em localhost, na porta 8080 com a action clientes e a task processos: http://localhost:8080/clientes/processos?xsd=1
Isto retorna o esquema completo dos complex types.
Há!
Aponte o navegador para http://host-do-serviço:porta/action/task?xsd=1
No meu caso, eu tenho um Web Service rodando em localhost, na porta 8080 com a action clientes e a task processos: http://localhost:8080/clientes/processos?xsd=1
Isto retorna o esquema completo dos complex types.
Há!
Marcadores:
Complex Types,
PHP,
Sistemas para Internet,
Symfony,
Web Services,
xsd
quinta-feira, 24 de setembro de 2009
Symfony: incluir javascript e css em tempo de execução
Aí vai uma dica para você que quer incluir algumas bibliotecas para usar somente em um template específico.
Você utiliza o objeto response, com o método addJavascript ou addStylesheet.
Exemplo:
<?php $sf_response->addJavascript('jquery-ui-1.7.2.custom.min.js'); ?>
<?php $sf_response->addStyleSheet('redmond/jquery-ui-1.7.2.custom.css') ?>
Fácil não? Assim você não carrega desnecessariamente as bibliotecas toda vez que fizer uma requisição no servidor.
Você utiliza o objeto response, com o método addJavascript ou addStylesheet.
Exemplo:
<?php $sf_response->addJavascript('jquery-ui-1.7.2.custom.min.js'); ?>
<?php $sf_response->addStyleSheet('redmond/jquery-ui-1.7.2.custom.css') ?>
Fácil não? Assim você não carrega desnecessariamente as bibliotecas toda vez que fizer uma requisição no servidor.
Marcadores:
Javascript,
OO,
PHP,
Stylesheet,
Symfony
quarta-feira, 19 de agosto de 2009
Dica PHP: If and print
Quando você precisa imprimir de forma curta algo, utiliza um operador condicional como o que segue:
0 ? 'X maior que zero' : 'X <>
Para que não conhece, isso se traduz em: se X maior que 0 "? = Então", ": = Senão".
Mas e quando você precisa imprimir somente uma parte da condição? No exemplo, se você só precisar imprimir o texto se X maior que zero? Bem, você pode fazer assim:
0 ? 'X maior que zero' : ''; ?>
Mas se não preciso do segundo teste, que atrasa o compilador (tá bom, deve ser um trilionésimo de segundo, mas é um fator contra mesmo assim) e é deselegante, como poderia fazer?
Simples:
0 AND print 'X maior que zero' ?>
A primeira vista talvez não se veja vantagem, mas com certeza é melhor e mais elegante e você vai acabar descobrindo...
Ha!
0 ? 'X maior que zero' : 'X <>
Para que não conhece, isso se traduz em: se X maior que 0 "? = Então", ": = Senão".
Mas e quando você precisa imprimir somente uma parte da condição? No exemplo, se você só precisar imprimir o texto se X maior que zero? Bem, você pode fazer assim:
0 ? 'X maior que zero' : ''; ?>
Mas se não preciso do segundo teste, que atrasa o compilador (tá bom, deve ser um trilionésimo de segundo, mas é um fator contra mesmo assim) e é deselegante, como poderia fazer?
Simples:
0 AND print 'X maior que zero' ?>
A primeira vista talvez não se veja vantagem, mas com certeza é melhor e mais elegante e você vai acabar descobrindo...
Ha!
Marcadores:
Condicional,
Dica,
IF,
PHP,
PRINT
Assinar:
Postagens (Atom)