Null Coalescing Operator in PHP
17/04/2018
PHP has been bringing several new features to the language. One of them is the Null Coalescing Operator which allows the return of a default value when the first one is not defined or empty.
read article →laravel certified · senior php developer
01/02/2018
WordPress é um conhecido CMS (Content Management System) desenvolvido em PHP. Lançado em 2003, sua concepção inicial era fornecer uma plataforma para blogs. Ao longo dos anos, o ecossistema em volta da plataforma foi crescendo de forma avassaladora e, hoje, nada mais nada menos que 29% da web roda sobre ele, o que representa uma soberba fatia da internet.
Vários temas e plugins com inúmeras finalidades foram sendo criados fazendo com que a plataforma não se limite à apenas blogs. Em contrapartida, nada foi feito em prol para melhorar sua arquitetura. Várias dívidas técnicas foram ascendendo e o descuido com a qualidade de código e falta de critério em aceitar ou não inserções de features na plataforma, tornaram o sistema inchado.
Neste artigo apresento alguns bons motivos para não escolher WordPress como sua plataforma de desenvolvimento:
Padrão de projeto
Não existe padrão de projeto no WordPress. O que existe são milhares de funções e algumas classes distribuídas em centenas de arquivos e uma boa esperança que tudo isso de alguma forma funcione.
Esqueça separação de regras de negócio e apresentação. É tudo junto e misturado! Pensar que um dia seu slogan já foi Code is Poetry é uma piada de mau gosto.
Poderíamos classificar WordPress como Spagheti Code. Ele usa e abusa do Observer Design Pattern. É praticamente tudo orientado a eventos por hooks (actions e filters) espalhados por todo o sistema. Poderíamos resumir, desse jeito, a forma que o WordPress trabalha:
add_action('save_post', 'my_save_post', 10, 3);
function my_save_post($post_ID, $post, $update) {
// regra de negócio
}
Como WordPress não conhece Namespaces, seu papel para entender como um sistema funciona é procurar por todo o diretório de arquivos por determinada action. Pelo menos você fica craque com o comando grep.
Banco de DadosOs dados armazenados no banco é o ativo mais valioso de um projeto. E se seus dados são salvos em uma estrutura desorganizada?
33 | active_plugins | a:4:{i:0;s:37:"mailchimp-for-wp/mailchimp-for-wp.php";i:1;s:35:"hero-slider/hero-slider.php";i:2;s:25:"wizard/wizard.php";i:3;s:43:"strong-testimonials/strong-testimonials.php";}
// Exibe o retorno automaticamente
the_content();
// Apenas retorna, útil para atribuir a variáveis
$content = get_the_content();
echo get_the_content();
$content = get_the_content();
global $wpdb, $post, $blog_id, $site_id, $domain, $path;
URLs absolutas
Podemos dizer que o WordPress tem uma tara por URLs absolutas. Mover o projeto para outro ambiente de desenvolvimento ou trocar o domínio do site, não é uma tarefa simples. Você terá o trabalho irritante de procurar e substituir URLs marretadas pelo nosso querido WordPress por todas as tabelas do seu banco de dados. A melhor maneira é abrir o arquivo SQL e fazer um search and replace.
Multisite
Os problemas com banco de dados no WordPress ainda não acabou. Suponha que você decida usar WordPress como Multisite. Ao criar um novo site, ele simplesmente gera uma série de 10 novas tabelas no banco de dados:
wp_1_commentmeta, wp_1_comments, wp_1_links, wp_1_options, wp_1_postmeta, wp_1_posts, wp_1_term_relationships, wp_1_term_taxonomy, wp_1_termmeta, wp_1_terms
wp_2_commentmeta, wp_2_comments, wp_2_links, wp_2_options, wp_2_postmeta, wp_2_posts, wp_2_term_relationships, wp_2_term_taxonomy, wp_2_termmeta, wp_2_terms
Segurança
Um código que não é bem elaborado ou testado tende a ter mais erros e consequentemente brechas. WordPress é a plataforma preferida entre os hackers.
Sempre argumentarão que ela é a plataforma mais utilizada. Parece que a Microsoft sofre do mesmo problema. Ambos tem uma base de código horrível. Curioso, não?
Conclusão
WordPress pode ser bom para qualquer um, menos para o bom desenvolvedor.
Utilizar WordPress para algo que não seja um simples blog é insanidade. O tempo para desenvolver um projeto e se adequar a forma como ele trabalha é maior que o tempo de criar um sistema a partir de um framework.
17/04/2018
PHP has been bringing several new features to the language. One of them is the Null Coalescing Operator which allows the return of a default value when the first one is not defined or empty.
read article →02/10/2017
Namespace é um delimitador para evitar conflitos entre nomes. Agora podemos agrupar seu uso quando compartilham do mesmo caminho.
read article →