Microframework PHP definição

Micro frameworks em minha observação

Vou descrever um pouco sobre o que tenho aprendido sobre framework PHP e esclarecer um pouco da diferença entre micro frameworks e fullstack frameworks. A comunidade PHP tem se dedicado em desenvolver essas duas frentes para facilitar a criação de novas aplicações, cada uma com suas vantagens. Acredito que podemos chegar a uma definição e esclarecer quando usar.

Proposta de definição

Um microframework é um termo usado para se referir a um framework de aplicação web minimalista. É contrastado com fullstack frameworks também chamados de frameworks entreprise, onde há uma coleção completa de recursos a disposição. Para um micro framework os recursos adicionais são considerados como dependências da aplicação, deixando mais enxuto o mecanismo mínimo de funcionamento.

Um micro framework facilita o recebimento de uma requisição HTTP, roteando a requisição para uma controller apropriada, despachando uma controller e retornando uma resposta HTTP. Além desse recurso talvez alguns adicionais, como log, porém a ideia que recursos sejam dependências do projeto a ser implementado. Como pode ser ilustrado na imagem abaixo:

ex de arquitetura de um microframework
exemplo de arquitetura de um microframework

Um fullstack framework é comum ter um conjunto de recursos para uma aplicação web completa, como:

  • Autenticação, contas, papéis, login, etc.
  • Acesso a base de dados, principalmente através de um mapeamento objeto relacional
  • Validação de entradas e sanitização de input
  • Views e template engine
  • Abstração de sistemas de arquivos

Também pode ser adicionado recursos por dependências em projetos fullstack, porém para uma aplicação web os recursos já existem em boa parte. Como é ilustado na imagem abaixo:

arquitetura de fullstack framework
exemplo de arquitetura de um fullstack framework

Projetos de microframeworks em PHP

Abaixo listei os quais eu consegui captar, eu particularmente uso o Slim framework e tenho um skeleton para usa-lo com o paradgima de Orientação a Objetos PHP em https://github.com/ptcmariano/slim-skeleton-controller

Movimento de microserviços

A proposta desse artigo não é se aprofundar a discussão para o movimento de microserviços, porém acredito que esses projetos de microframeworks vem para facilitar a implementação da estratégia de microserviços. Deve haver relações entre esses movimentos, se alguém tiver referências por favor comentem para que a comunidade tenham melhor entendimento dessa relação.

Conclusão, prós e contras

Podemos observar a diferença principal é que os microframeworks usam dependências para criar as aplicações web, isso traz a vantagem de maior flexibilidade para variar quais dependências você vai escolher para cada projeto, porém há necessidade de administração maios das dependências. Para a escolha de um fullstack framework, tem a vantagem de haver recursos disponíveis para a sua aplicação, tendo também a facilidade de uma única documentação explicar como tratar todos recursos disponíveis, com a desvantagem de carregar recursos que talvez não sejam necessários para o projeto que você irá usar e menor flexibilidade para alterar os recursos que serão usados (não é comum altera-los já que estão disponíveis). Bom com essas informações é possível melhorar a escolha de cada projeto, sendo que pode ser enriquecido a decisão com seus próprios critérios para escolha de um ou outro tipo de framework. Desejo que a próxima vez que tomar a decisão de usar um framework leve em consideração, além é claro de sua experiência, qual é a necessidade do projeto, vai usar poucos recursos? vai experimentar um recurso novo? Com isso você terá a oportunidade de expandir a suas habilidades e a aplicação web ter novos recursos quem sabe até disponibilizar novas oportunidades de negócios.

Se achar que algum ponto pode ser melhor no artigo, por favor faça comentários a respeito. Pretendo aumentar a discussão sobre isso para entendermos melhor essas frentes.

Referências

Acessados em 17/04/2017

https://belitsoft.com/laravel-development-services/full-stack-framework-or-microframework-laravel-or-lumen

https://en.wikipedia.org/wiki/Microframework

Temas wordpress e a hierarquia de templates

Temas no wordpress direcionam a parte visual do seu site wordpress. A comunidade criou uma fonte definitiva para a criação de temas, o WordPress Theme Developer Handbook (ou Manual do desenvolvedor de temas).

Comparando temas são apenas arquivos .php carregados pelo WordPress, em nível superficial.

A hierarquia de templates

Quando é acessado o site wordpress existe uma ordem para os arquivos que vão ser consultados para exibir o layout. Por exemplo se você navegar para um único post, o WordPress vai procurar um arquivo single-post.php, se não for encontrado ele procura o silgle.php e se não encontrar ele procura o index.php para carregar as alterações de exibição do post.

Minha Jornada com PHP

Recentemente me deparei que estou envolvido até as tampas com PHP. Comecei aqui mesmo em 2010 e nem sabia, a plataforma wordpress ainda não tinha me trazido para desenvolvimento, era só uma forma de compartilhar os meus estudos.

Agora em 2017, nos últimos só tenho utilizado PHP, por que? Simples, ele é produtivo. Ah beleza, se usar Rails ou Django tem gente que consegue criar aplicações com facilidade. Mas eu ter trabalhado 3 anos e meio na Catho, sai pra montar um negócio (em outro post explico, eu se quiser me mande uma msg), fez com que eu conhecesse essa incrivel plataforma, gratuita, popular e vamos dizer “simpática”. Veja só é um elefante! (elephantine mascot of the PHP project) rsrs.

elephpant-running-78x48

Bom pra continuar essa saga, comprei um livro, criando aplicações web com wordpress.

Pretendo criar artigos sobre WP aqui! e continuar a descrição dos meus estudos nesse blog. Depois de um hiato de alguns meses.

Abraços.

Paulo Tiago Castanho Mariano

 

Time que é time trabalha junto

Time é um organismo social vivo que consegue entrosamento e comportamentos parecidos dos integrantes. Para desenvolver um bom sistema a formação de um time faz parte do processo. Diferentes de grupos de trabalhos, onde cada um tem o seu comportamento, objetivos e resultados individuais os objetivos e resultados de um time são coletivos e maiores do que a soma das partes.

Para ser time é preciso estar junto e agir juntos. Se um integrante age separado ou não fica um bom tempo junto, não está no time.

https://psicologado.com/atuacao/psicologia-organizacional/grupos-e-equipes-de-trabalho-nas-organizacoes

Princípios de usabilidade em aplicativos móveis

Reblogando conteúdo muito bom sobre UX mobile. Na minha opinião também serve para web.

https://www.thinkwithgoogle.com/intl/pt-br/articles/mobile-app-ux-principles.html

 

Os aplicativos móveis estão dando forma a novas expectativas de transação e serviços, portanto, melhorar as experiências dos usuários e as conversões é de extrema importância.

ADOTE

Elimine obstáculos de utilização

O objetivo nesse estágio é remover todos os obstáculos de utilização – e adesão – do seu aplicativo móvel.

Telas de Abertura (Splash Screen), Dicas & Técnicas de Ativação

Faça com que os usuários sintam-se engajados pelo conteúdo/substância o mais rápido possível para que eles possam utilizar e analisar o valor do aplicativo para eles. A primeira impressão conta, e a tela de abertura (splash screen) oferece uma janela pequena, mas crucial para engajar o usuário com a sua proposta. Opções de Dicas/Ajuda ou uma sequência de Técnicas de Ativação só devem ser implementadas se absolutamente necessário – nunca deixe os usuários esperando.

Tela Inicial & Navegação

A tela inicial de um aplicativo deve proporcionar ao usuário jornada(s) e funcionalidades para completar suas tarefas prioritárias, além de proporcionar conteúdo que atende as suas expectativas. A navegação deve ser clara, com foco na tarefa e na lógica, e consistente por todo o aplicativo. Apenas a navegação e o conteúdo primário devem ser visíveis na configuração padrão, com o conteúdo secundário escondido – porém, disponível através de cliques e deslizes – fora da tela.

Cadastro, Log-In e Permissões

Um dos grandes pontos de diferença entre aplicativos móveis e sites móveis é que os aplicativos permitem que os usuários se mantenham logados por mais tempo (eliminando o esforço de log-in manual e erros), recebendo os benefícios do nível de conveniência e personalização, derivados das suas informações, comportamentos e histórico de transações. Mas não solicite um cadastro a não ser que absolutamente necessário para proporcionar esse tipo de valor para o usuário.

USE

Simplifique decisões de conversão

O foco nesse estágio é permitir que as pessoas rapidamente busquem o que estão procurando, pesquisem e considerem produtos e serviços e continuem na sua jornada de transação entre diversos dispositivos.

Busca

Uma ótima ferramenta de busca ajudará os usuários a encontrarem o que estão buscando de maneira rápida e fácil, atingindo o objetivo de satisfazer suas necessidades e impulsionar o índice de conversão. Geralmente, a busca em aplicativos apresenta um nível de conversão muito mais alto do que a utilização sem busca, refletindo a intenção maior do consumidor. Existem diversas maneiras de permitir a busca, de palavras-chave a leitura óptica do produto até buscas por imagem.

Produtos & Serviços

As telas de produto são onde os usuários fazem suas decisões de conversão-chave, por exemplo: adicionar ao carrinho, adicionar à lista de desejos, reservar agora, ligar agora, preencher o formulário, etc. E boas telas de produto permitem que os usuários concluam a transação rapidamente, salvem os dados para depois e compartilhem os itens sobre os quais eles devem tomar alguma decisão.

Entre Dispositivos e Off-Line

Com o aumento de consumidores fazendo pesquisas em dispositivos móveis e convertendo em outras sessões ou em outro dispositivo ou na própria loja, é extremamente importante que os aplicativos permitam que os usuários façam a transição perfeita entre pontos de contato físicos e digitais rumo à conversão.

FACILITE A TRANSAÇÃO

Proporcione o máximo de conveniência

O objetivo nesse momento é ajudar os usuários a avançarem em cada etapa do check-out empenhando o mínimo de esforço e contando com mensagens confiáveis suficientes para realizarem a conversão sem pensar duas vezes.

Na etapa do carrinho compras, devemos dar o impulso necessário para que o usuário realize o check-out (para converter) ou continue comprando (para aumentar o valor médio do carrinho); confirmar todos os itens e os custos; e permitir que o usuário edite os itens. Na etapa de pagamento: devemos empregar métodos práticos de captação de dados – por exemplo, leitura óptica de cartões, pagamento express – e o preenchimento automático de dados para usuários recorrentes. Na etapa de check-out e confirmação devemos remover distrações que não levam à conversão; exibir opções de atendimento; fornecer check-out de uma única tela para usuários recorrentes; confirmar os principais detalhes da transação; e exibir conteúdo contextual que agregue valor além da operação imediata (e que contribua para a retenção).

RETORNE

Self-service, engajamento e satisfação (ou encantamento)

Durante esta etapa, o foco principal é ser útil, gerar engajamento e satisfação (encantamento) para reter consumidores ou incentivar fidelidade.

Conta & Senhas

Conta: os aplicativos são o ponto de contato ideal para consumidores e membros servirem a si mesmos, assim como administrarem suas contas e transações a qualquer hora e em qualquer lugar. Dê o controle e o nível de conveniência que apenas aplicativos móveis podem proporcionar aos seus consumidores.

Senhas: permita que os usuários recebam e resgatem senhas ou vouchers no aplicativo, visualizem seu status de fidelidade ou recebam atualizações quando algo for alterado – e elimine a necessidade de imprimir e portar garantias físicas.

Conteúdo & Design

Otimize a experiência do usuário com conteúdo adequado, tom de voz, design visual, utilização de motion design sutil, e ofereça melhores formas de descobrir conteúdos e itens – e garanta que os usuários nunca se deparem com becos sem saída.

Widgets e Notificações

Widgets: são extensões do app contidas dentro do seu aplicativo móvel principal que permitem que você publique pílulas de informação de alto valor e em momentos oportunos para usuários específicos, as quais são exibidas no smartphone do usuário para serem visualizadas e digeridas rapidamente.

Notificações: são mensagens que avisam os usuários de eventos altamente relevantes, pessoais e oportunos, assim como conteúdos ou mensagens. As notificações funcionam em modo stream no plano de fundo, até que o usuário identifique ou ouça um alerta.

Para ter acesso a todos os princípios de UX e as métricas-chave para mensuração, faça o download do relatório completo.