Escolhendo um framework PHP


Desde que comecei a trabalhar com programação que me interessei por ferramentas que pudessem auxiliar no meu trabalho, seja para agilizar o processo de desenvolvimento, ou para melhorar a qualidade do código. Logo no início me chamaram atenção os CMS como o Joomla, Drupal e WordPress, e posteriormente os frameworks.

Minha história com frameworks começou quando comecei a trabalhar na UFPB , em 2007, no projeto da UFPB Virtual, de cursos à distância. Precisava desenvolver um sistema para possibilitar a integração do Sistema de Controle Acadêmico com o Sistema de Ensino à Distância (Moodle). Foi aí que conheci o Zend Framework, em sua primeira versão. Um dos primeiros frameworks PHP, que parecia uma maravilha diante do que tinha visto até então, pois englobava várias ferramentas em uma só, dentro de um padrão pré-definido por uma empresa consolidada. Ter esse conhecimento no meu currículo, sem dúvida, me abriu várias portas.

Ler maisEscolhendo um framework PHP

Criando tabelas InnoDB no Laravel com Artisan e migrations


Uma das características mais interessantes do Laravel é a facilidade de criar toda a estrutura do código rapidamente utilizando a ferramenta artisan. Uma dessas funcionalidades, é a de criar tabelas diretamente no banco de dados, baseando-se em suas classes de migration.

Por padrão, o Laravel irá criar as tabelas utilizando a engine MyISAM. Ela é uma engine útil quando precisamos de alta performance, porém, ela não serve se quisermos trabalhar com relacionamentos entre as tabelas, já que não aceita chaves estrangeiras. Para isso, geralmente é usada a engine InnoDB. Precisaremos, então, mudar essa configuração para que as tabelas sejam criadas utilizando InnoDB.

Ler maisCriando tabelas InnoDB no Laravel com Artisan e migrations

Exibindo mensagens de forma prática com jn-messages


Recentemente criei um projeto simples, mas bastante útil, para exibição de mensagens utilizando javascript de forma prática. Chamei-o de jn-messages.

Com ele, é possível criar blocos de mensagens de três tipos:
default: Tipo padrão, como os alerts do bootstrap;
floating: As mensagens flutuam na frente do conteúdo;
corner: As mensagens aparecem no canto inferior direito da página.

Cada bloco de mensagens pode ser configurado com as seguintes opções:
max: Limitar a quantidade máxima de mensagens a ser exibida, fazendo com que, caso esse limite seja ultrapassado as mais antigas vão sendo fechadas automaticamente;
closable: Ativar ou não a exibição de um botão X para fechar cada mensagem;
timeout: Definir um tempo para que as mensagens sejam fechadas depois de um número de segundos definido;
counter: Evitar que mensagens repetidas sejam exibidas, mostrando, em vez disso, um contador de exibições em cada mensagem;

Também é possível definir uma lista mensagens fixas com códigos, o que é útil para sistemas que já têm uma lista de mensagens predefinidas.

O código está disponível gratuitamente no github em https://jaimeneto.github.io/jn-messages/ e uma demo em http://jaimeneto.com/jn-messages/demo/ para quem quiser experimentar!

Espero que seja útil!

Slides da palestra “Seu framework é melhor pra quê?” no 1º PHP Day em João Pessoa


Neste sábado (10 de Novembro de 2018) aconteceu o 1º PHP Day em João Pessoa/PB, realizado pela comunidade do PHP-PB. Fui convidado para dar uma palestra, e o tema que apresentei foi “Seu framework é melhor pra quê?”.

Ler maisSlides da palestra “Seu framework é melhor pra quê?” no 1º PHP Day em João Pessoa

Retornando JSON no PostgreSQL


Uma funcionalidade muito útil do banco de dados PostgreSQL, e que muita gente não conhece, é transformar um conjunto de dados no formato JSON. Esse formato é muito utilizado atualmente para comunicação entre serviços, alimentação de dados em grid, e várias outras funcionalidades. Alguns bancos usam funções que convertem os registros para JSON, mas o PostgreSQL tem uma forma muito mais prática, como veremos nos exemplos a seguir:

Digamos que eu queira a lista de posts de um site para ser exibida em um grid. Se fizer a query seguinte, eu terei essa lista como result set:

SELECT * FROM posts

Ler maisRetornando JSON no PostgreSQL

A evolução da comparação ternária no PHP


O PHP vem evoluindo muito desde sua criação, principalmente nas últimas versões, que vêm incorporando os mais modernos conceitos no que diz respeito ao desenvolvimento de software. Uma das funcionalidades básicas, e que também vem trazendo evoluções, é o operador ternário. Vamos dar uma olhada nas formas que temos de utilizá-lo e entender a diferença entre elas.

Ler maisA evolução da comparação ternária no PHP

Usando o operador spaceship do PHP7


Pra quem ainda não está familiarizado com esse novo operador do PHP7, o spaceship, eis um resumo de sua funcionalidade: ele serve pra comparar dois valores, e saber se o primeiro operando é menor, igual ou maior que o segundo. Ou seja, ele junta os operadores <, == e > num só, formando <=>. Vejamos como seria fazer essas três comparações sem esse operador:

Ler maisUsando o operador spaceship do PHP7

Classe PHP para países


Não raramente precisamos trabalhar com países em nossos sistemas. Então, vou deixar aqui uma classe PHP já pronta pra isso, com suporte a internacionalização, inclusive.
Deixei a classe já com os países em inglês e português, quem precisar pode adicionar outros países, caso necessário.
Também adicionei dois métodos estáticos para buscar o nome pelo código do país, e o contrário também. O motivo de ter criado como métodos estáticos é apenas por questões práticas, pois assim não é necessário instanciar a classe antes de usá-la.

Ler maisClasse PHP para países

Converter CamelCase e snake_case


Algumas vezes precisamos converter textos em CamelCase para snake_case, ou o contrário. Por exemplo, digamos que você use o nome dos atributos de uma classe em camelCase e os campos da tabela em camel_case, e em algum momento do seu código você precise converter esses nomes. Então, eis as funções PHP que você precisa para essas conversões:

Ler maisConverter CamelCase e snake_case