Postagens populares

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

Ternary Operators - mais rápidos que IF convencional?

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á!

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!

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á!

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!

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á!

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.

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!

Magazine Luiza