Devido ao COVID-19, para proteger a todos os envolvidos na gráfica, correio, na Casa do Código e você, estamos temporariamente vendendo apenas e-books.

Use o código e tenha 10% de desconto!

Mezzio e PHP 7 Uma união poderosa para criação de APIs

Jhones S. Clementino

Prefácio

No começo de 2020, a Zend anunciou que o projeto Zend Framework e seu ecossistema passaria por mudanças, dando adeus ao Zend Framework e boas-vindas ao projeto Laminas.

Até então a Zend Technologies liderava o projeto do Zend Framework, que depois passou para a Rogue Wave Software. Com a transição o projeto está sendo liderado por um comitê técnico independente e em breve será regido por uma carta patente com a Linux Foundation.

Vale ressaltar que o Zend Framework teve ampla adoção pelos profissionais de PHP, sendo a base de vários portais, e-commerces, sites, APIs, e muitos outros projetos. Com o fim do projeto Zend Framework e com o início do projeto Laminas, novos projetos surgirão e essa será como uma nova Era, a Era do projeto Laminas.

É importante dizer que o Laminas e seus subprojetos são a continuação oficial do Zend Framework e continuará sendo de código aberto. Quando me refiro a subprojetos do Zend Framework, incluo o Zend Expressive e Apigility.

Não se preocupe com as mudanças que o projeto teve. Ao longo do livro veremos quais foram as mudanças em nível de código e também teremos um capítulo que servirá de base para que você possa realizar a migração de seu código do Zend Framework para Laminas.

Desde o lançamento do Zend Framework, a comunidade Zend tem crescido cada vez mais. Conforme a tecnologia e os anos foram avançando, tornou-se essencial a agilidade na entrega de novas aplicações. Contudo, a Zend ainda não possuía um framework enxuto para um desenvolvimento mais rápido de aplicações, focado em encontrar uma solução para o problema. Foi então que ela desenvolveu o que todos mais aguardavam, um microframework.

Zend Expressive é um microframework criado pela Zend com o objetivo de atender desde as demandas mais simples para criação de aplicações de mínima escala a APIs e aplicações mais complexas de alta escala.

IMPORTANTE: com a migração do código do Zend Framework para Laminas, o Zend Expressive passou a se chamar Mezzio. Daqui para frente o Zend Expressive será referenciado como Mezzio com exceção da menção aos conceitos históricos da Zend e seu ecossistema Zend Framework.

Hoje em dia, o número de aplicações distribuídas está cada vez maior. Entende-se por aplicações distribuídas aquelas que funcionam de forma independente, ou seja, sem serem restritas a apenas um tipo de plataforma. O Mezzio vai nos ajudar a desenvolver uma API ou, como muitos chamam, Web Service, que funcionará de forma independente para que qualquer aplicação client possa fazer a comunicação de forma simples.

Não se preocupe se no momento você não estiver entendendo muito bem, vamos falar muito sobre o Mezzio no decorrer deste livro, afinal ele é o protagonista desta obra.

Este livro é indicado para os desenvolvedores que estão iniciando no mundo dos frameworks/microframeworks e também para os programadores mais experientes que já possuem um conhecimento mais avançado das tecnologias voltadas para a Web com o PHP.

Para este livro, é necessário que o leitor tenha o conhecimento básico sobre PHP 7 e Programação Orientada a Objetos. Ambos são indispensáveis pois serão utilizados com frequência durante o desenvolvimento do nosso projeto.

O projeto e os exemplos podem ser desenvolvidos utilizando:

* S.O (Sistema Operacional): Linux Ubuntu 16.04 ou superior com suporte a PHP 7 / Windows 7 ou superior / MacOS com suporte a PHP 7;

* Servidor: Apache2 ou Nginx;

* Linguagem de programação: PHP 7.4 ou superior;

* IDE: PHPStorm (Você pode utilizar qualquer outra IDE de sua preferência como: Eclipse, Netbeans, Sublime, Notepad++, Visual Studio Code entre outras);

* Client HTTP para fazer as requisições da API: Postman ou outro client de sua preferência como: Advanced REST client, SOAP UI, entre outros;

* Gerenciador de dependências: Composer na versão 1.7.0 ou superior.

Os exemplos estão no repositório do GitHub: https://github.com/jhones/projeto-mezzio/.

Caso o leitor possua dúvidas, críticas, sugestões ou correções, poderá entrar em contato através do LinkedIn: https://www.linkedin.com/in/jhones-dos-santos-clementino-91a90256/

No decorrer deste livro, vamos abordar diversos temas envolvendo APIs, microsserviços e o microframework Mezzio, que foi lançado antes do Zend Framework 3 (atualmente Laminas MVC). Vamos abordar também como fazer a integração com o ORM Doctrine, falaremos de middlewares e muito mais. Por fim, vamos desenvolver uma API bem simples com o Mezzio e PHP 7 em que vamos realizar um CRUD de tipos de usuários, usuários e de mensagens. Nós vamos aplicar alguns dos componentes do Laminas para que o conhecimento adquirido seja fixado da melhor maneira possível. Se você está preparado para iniciar nossa jornada rumo ao mundo dos microframeworks e APIs então siga em frente aos próximos capítulos. Bom estudo!

Sobre o autor

Meu nome é Jhones dos Santos Clementino, sou apaixonado por programação desde os 17 anos quando descobri que os softwares, games e sites eram desenvolvidos através de alguma linguagem de programação - essa descoberta mudou minha vida. Comecei a me interessar por esses assuntos cada vez mais e mais porque achava incrível uma sequência de código fazer algo tão útil e interessante como os jogos, por exemplo, isso é fascinante! =D

Sou formado em Ciência da Computação pela Universidade Paulista - UNIP e trabalho com desenvolvimento de sistemas Web desde 2009, quando ocorreu meu primeiro contato com o PHP. Desde aquela época fui me dedicando a aprender mais e mais com cursos online, tutoriais, livros e apostilas, e meu foco tem sido a Web porque são tecnologias que estão em constante evolução. Pretendo ampliar mais esse leque de plataformas e também dedicar-me ao mobile para projetos futuros que tenho em mente.

Meu primeiro contato com o ecossistema Zend Framework (atualmente Laminas) foi em 2013 quando ele já estava na versão 2. Entrei para área de TI de um banco, onde estavam fazendo um portal interno completamente em ZF2, foi então que encontrei a perfeita oportunidade para aprender a utilizar o ZF2 e gostei muito da sua forma explícita de definir a lógica. Há quem critique e há quem goste do ZF, eu particularmente gosto muito e posso dizer que é um dos meus frameworks preferidos, mas como um profissional não posso me deixar levar pelo favoritismo na escolha de um framework para trabalhar dentro de um ambiente corporativo, afinal, há muitas questões a serem consideradas. Também sou o autor do livro: PSRs - Boas Práticas de Programação em PHP, publicado exclusivamente pela editora Casa do Código.

Quando possuo um tempo livre gosto de fazer alguma coisa que tire a minha atenção do mundo virtual por algum tempo, então gosto de sair, desenhar e até mesmo cantar (vamos deixar isso para uma outra hora, OK? Rs). Bom, meu amigo, esse é um resumão de quem sou eu.

 

Sumário

  • 1 Introdução
  • 2 Migrando para o Laminas
    • 2.1 Preparação para realizar a migração
    • 2.2 Executando o comando de migração
  • 3 Frameworks full stack vs. microframeworks
    • 3.1 Framework full stack
    • 3.2 Microframework
    • 3.3 Quando utilizar framework full stack ou microframework
  • 4 Explorando APIs, SOAP, REST e RESTful
    • 4.1 API (Application Programming Interface)
    • 4.2 SOAP (Simple Object Access Protocol)
    • 4.3 REST (Representational State Transfer)
  • 5 Preparando o ambiente
    • 5.1 Linux
    • 5.2 Windows
    • 5.3 Instalações e configurações adicionais
  • 6 Clonagem e configuração do Mezzio
    • 6.1 Hello Mezzio
    • 6.2 Configurando o Mezzio com VHOST no Linux
    • 6.3 Configurando VHOST no Wamp Server
    • 6.4 Bug Fix Apache ServerSignature
    • 6.5 Conhecendo a estrutura do Mezzio
  • 7 Configurando o Doctrine ORM e gerando entidades
    • 7.1 Integrando o Doctrine ao Mezzio
    • 7.2 Gerando entidades automaticamente
  • 8 Melhorando a entidade TiposUsuario
  • 9 Melhorando a entidade Usuarios
  • 10 Melhorando a entidade Mensagens
  • 11 Criando repositórios e estendendo a classe EntityRepository
    • 11.1 Criando o repositório TiposUsuarioRepository
    • 11.2 Criando o repositório UsuariosRepository
    • 11.3 Criando o repositório MensagensRepository
  • 12 Criando e registrando serviços
    • 12.1 Criando a classe abstrata ServiceAbstract e o serviço TiposUsuarioService
    • 12.2 Criando o Serviço UsuariosService
    • 12.3 Criando o serviço MensagensService
    • 12.4 Criando a Factory TiposUsuarioServiceFactory
    • 12.5 Criando a Factory UsuariosServiceFactory
    • 12.6 Criando a Factory MensagensServiceFactory
    • 12.7 Registrando os serviços
  • 13 Criando e registrando Handlers de tipos de usuário
    • 13.1 Criando o Handler TiposUsuarioListarHandler
    • 13.2 Criando o Handler TiposUsuarioListarUmHandler
    • 13.3 Criando o Handler TiposUsuarioCriarHandler
    • 13.4 Criando o Handler TiposUsuarioAlterarHandler
    • 13.5 Criando o Handler TiposUsuarioDeletarHandler
  • 14 Criando e registrando Handlers de Usuários
    • 14.1 Criando o Handler UsuariosListarHandler
    • 14.2 Criando o Handler UsuariosListarUmHandler
    • 14.3 Criando o Handler UsuariosCriarHandler
    • 14.4 Criando o Handler UsuariosAlterarHandler
    • 14.5 Criando o Handler UsuariosDeletarHandler
  • 15 Criando e registrando Handlers de Mensagens
    • 15.1 Criando o Handler MensagensListarHandler
    • 15.2 Criando o Handler MensagensListarUmaHandler
    • 15.3 Criando o Handler MensagensCriarHandler
    • 15.4 Criando o Handler MensagensAlterarHandler
    • 15.5 Criando o Handler MensagensDeletarHandler
  • 16 Definindo e testando as rotas da aplicação
    • 16.1 Definindo as rotas de tipos de usuário
    • 16.2 Testando as rotas de tipos de usuário
    • 16.3 Definindo as rotas de usuários
    • 16.4 Testando as rotas de Usuários
    • 16.5 Definindo as rotas de Mensagens
    • 16.6 Testando as rotas de Mensagens
  • 17 Conhecendo as PSRs 7 e 15
    • 17.1 PSR-7 (HTTP Message Interfaces)
    • 17.2 PSR-15 (HTTP Server Request Handlers)
  • 18 Conclusão
  • 19 Referências bibliográficas

Dados do produto

Número de páginas:
354
ISBN:
978-65-86110-04-3
Data publicação:
03/2020

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter