Resolvendo Problema de Escopo de Variáveis PHP

Por mais que tenhamos conhecimento de como funciona o PHP, as vezes, nos deparamos com alguns problemas que acabam com nosso dia. Realmente não há jeito melhor do que contar com a experiência de quem já passou por isso para se chegar a solução desejada. Hoje vou explicar como funciona o escopo das variáveis em PHP, e já dar algumas dicas para evitar problemas futuros.

Escopo de váriáveis é o termo usado para definir o contexto em que uma determinada variável está inserida. Por padrão, as variáveis tem o escopo no “modo” global (fora de funções e métodos). Há dois contextos:

  • Global – Como o próprio nome já diz, é global, ou seja, atige toda a programação (com algumas restrinções).
  • Local – Retringe-se ao local onde está inserida. Aplicado por padrão em funções. Não dá para se usar uma variável de uma função em outra função por exemplo.

Agora que você já tem idéia do escopo de uma variável, vamos entrar em alguns detalhes:

Como Converter Arrays em Objetos e Vice-Versa Usando Uma Linha de Código

Nem sempre o que temos é o que queremos, e trabalhar com arrays e objetos simultaneamente acaba se tornando chato, eu pessoalmente não gosto muito de arrays, principalmente quando é para exibir na tela os resultados de uma pesquisa do banco de dados ou coisa do tipo.

Já vi em muitos código fontes, funções um tanto que imensas para realizar a tarefa de conversão de tipos – arrays para objetos ou objetos para arrays. Mas o que muita gente não sabe é que existe um atalho para isto, simples e rápido. Vejamos um exemplo:

$dados = array('nome' =>'Mateus', 'sexo'=>'Masculino');
echo $dados['nome']; //Resultado: Mateus
echo $dados->nome; //Resultado: Erro

$dados = (object) $dados; //É aqui que tudo funciona...
echo $dados->nome; //Resultado: Mateus

Anteriormente tinhamos uma array – $dados -, que em um “passe de mágica” virou um objeto. Para converter um objeto em uma array o processo é bem simples também:

$array = (array) $objeto;

Também é possível formatar outros tipos, como string, integer ou float:

$numero = (float) $numero;
$boolean = (boolean) $boolean;
$string = (string) $string;
....

Tecnicamente falando, este processo é chamado de Type Casting, ou Tipo de Vazamento em português e como o próprio nome já diz, ele converte o modo de vazamento (ou distribuição) de um elemento. Para saber um pouco mais, veja no manual do PHP sobre Type Casting.

Se você não sabe o tipo do elemento, use a função var_dump ou a função para debug. Até mais.

Debug, a Função Que Faltava no Core do PHP

Quem nunca fez um debug em PHP? Debugar objetos, arrays, strings ou seja lá o que for é sempre uma tarefa repetitiva, você sempre faz a mesma coisa, até o que não precisaria ser feito. Esta dúvidando? Então preste atenção quando for debugar seus códigos em PHP, ASP, Python…

Agora eu apresento a vocês a função DEBUG; uma função, uma linha e mais tempo pra tomar café e brincar com seu cachorrinho:

/**
 * Debug simples para objetos, arrays, strings ou qualquer tipo de dados
 * Adiciona tags HTML para melhor visualização
 * @param mixed $elem - elemento a ser debugado
 */
function debug($elem){
	echo '<pre>';
	var_dump ($elem);
	echo '</pre>';
}

E como ninguém é de ferro, um exemplo:

debug($objetoX);
debug($minhaArray);
...

Fica ai o Snippet em PHP pra quem já cansou de ficar dando echo sempre ;).

Como Colocar Favicon em Seu Website

favicon_tutorial1

Hoje decidi fazer este post sobre favicons, mostrar seus benefícios e como inserir favicons que funcione no IE (Internet Explorer) e em todos ou outros navegadores. Vai ser bem completinho:

O que é favicon?

Favicon nada mais é do que aquelas pequenas imagens que aparecem no navegador ao lado do endereço do site. Para maiores e melhores detalhes veja a descrição do Winkipédia:

Favicons (palavra derivada de favorite (favorito) e icon (ícone)) são pequenas imagens no formato *.ico com de cerca de 16×16 pixels que ficam guardados em um site para visualização pelo navegador. Em alguns navegadores como Internet Explorer até a versão 6, só exibem os favicons quando um site é adicionado aos favoritos. Neste caso, apenas no menu correspondente aos favoritos pode-se encontrar a imagem. Em outros navegadores como Firefox, Opera e Internet Explorer 7(+), os favicons podem ser encontrados também nas abas e na barra de endereço.

Os favicons também tem teor de acessibilidade pois ajudam um usuário comum a identificar uma página quando ela está exibida em uma lista ou em uma barra de abas. Visando isto, muitos favicons são imagens simplificadas do logotipo da marca que representam.

Na ausência de um favicon, os navegadores exibem seu próprio ícone ou um ícone padrão como uma folha em branco.

Benefícios

Alguns benefícios que podemos conquistar com o uso de uma favicon são os listados abaixo:

  • É otimo para marcar seu site tornando a localização deste mais fácil e de brinde tem até um destaque a mais;
  • Seu site vai ganhar uma aparência mais profissional e exclusiva que pode levar a mais links para seu site melhorando a parte do SEO (aqui já entra PR).

Preparando o terreno

Como tudo o que vamos fazer tem um requisito este não deixa de ser diferente. Para este processo precisamo de uma imagem no formato .ico com 16×16 pixels que pode ser feita usando o Photoshop ou Fireworks ou o seu programa de preferência. Para o processo que explicarei agora recomendo que faça a imagem em um formato grande uns 100×100 pixels deve ser o suficiente.

Quais São os Melhores Frameworks Para PHP, Ruby, JS e CSS?

Creio que você já deve ter feito esta pergunta pelo menos uma vez quando pensou em usar algum framework para desenvolver. Foi pensando nisso que alguém (não consegui localizar o autor, somente a hospedagem) fez um site comparando os melhores frameworks atuais.

http://www.bestwebframeworks.com/
bestwebframework2

É o site que precisávamos… uma vez selecionado a linguagem, será exibida uma tabela com pelo menos alguns pontos básicos:

  • Licença;
  • Requisitos;
  • Recursos;
  • Compatibilidade.

Quem tiver dúvidas creio que ao visitar este site terá mais certeza de qual framework precisa. Para não ficar só na dica eu vou falar os melhores na minha opinião: