ebook img

PHP com Silex no Google App Engine PDF

122 Pages·2017·1.68 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview PHP com Silex no Google App Engine

PHP com Silex no Google App Engine Abordagem prática na criação de APIs com o micro framework Silex. Nanderson Castro Esselivroestáàvendaemhttp://leanpub.com/phpcomsilex-e-googleappengine Essaversãofoipublicadaem2017-09-14 EsseéumlivroLeanpub.ALeanpubdápoderesaosautoreseeditoresapartirdoprocessode PublicaçãoLean.PublicaçãoLeanéaaçãodepublicarumebookemdesenvolvimentocom ferramentaslevesemuitasiteraçõesparaconseguirfeedbacksdosleitores,pivotaratéquevocê tenhaolivroidealeentãoconseguirtração. ©2015-2017NandersonCastro Tweet Sobre Esse Livro! PorfavorajudeNandersonCastroadivulgaresselivronoTwitter! Ahashtagsugeridaparaesselivroé#phpcomsilexnoappengine. Descubraoqueasoutraspessoasestãofalandosobreesselivroclicandonesselinkparabuscara hashtagnoTwitter: #phpcomsilexnoappengine AgradeçoaDEUSpelaforçaconcedidaparacriaressematerial,agradeçoemespecialaminha esposapormeaguentaremminhacarreiraeemminhassaídasparaeventos.Agradeçotambém aosmeusamigosdacomunidadePHPMaranhão,comunidadeessaqueparticipoativamentee cresçobastanteacadadiaatravésdasinteraçõesexistentesnamesma.Agradeçominhafamiliapor sempreacreditareincentivaromeutrabalho.Porfim,agradeçoaminhabebê,éporelatambém quetenhoforçasparacontinuargerandoconteúdosedivulgandoconhecimento.Enfim,obrigadoa vocêleitor,porteradquiridoestee-book.Esperocontribuircomsuacarreiraprofissionalecomseu crescimento! Conteúdo Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Outrosprojetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 SilexCasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 CodeExpertsLearning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 ConhecendoeinstalandooSilex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Silex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Silex:HelloWorld! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 UmpoucomaissobreoSilex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Rotasdinâmicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Definindovaloresdefaultnasrotasdinâmicas . . . . . . . . . . . . . . . . . . . . . . . . 7 Middlewares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 MiddlewaresdeRota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 FalandoumpoucosobreServices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 APIEventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Nossoprojeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 NossaAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 PHPunit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Doctrine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ConfigurandoNossoProjeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Estruturadepastas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Definindoeinstalandonossasdependências . . . . . . . . . . . . . . . . . . . . . . . . . 16 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 PHPunit101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 CONTEÚDO Introduçãoaostestes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 TDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 OPHPUnit! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Doctrine101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 ConfigurandooDoctrineEmNossoProjeto . . . . . . . . . . . . . . . . . . . . . . . . . 23 ConfigurandoDoctrineCLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Silex2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Atualizandoparaaversão2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 ControllerscomoServiço . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 OrganizandonossasrotasnoSilex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Nossaregradenegócio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Iniciando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 NossoTestCase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 NossasEntidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 UserService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 ImplementaçãodoUserService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 PasswordGenerator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 ParticipanteEventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 AlterandonossoUserService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 TestsemnossoEMService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 TrabalhandocomDoctrineRelationsEmNossoProjeto . . . . . . . . . . . . . . . . . . . 66 Antesdecomeçarmos… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Nossasalterações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 TestesFuncionaisdeNossasEntidadeseEMService . . . . . . . . . . . . . . . . . . . . . 69 TestesFuncionaisdoEMService . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 OArrayCollection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Concluindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 TestandoNossosControllers&Endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 InstalandooGuzzle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 RevendonossoFunctionalTestCase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Nossoendpoint/events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 Nossoendpoint/users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Nossoendpoint/events/{event_id}/subscription . . . . . . . . . . . . . . . . . . . . . . . 92 ComoficounossoRoutereControllerService . . . . . . . . . . . . . . . . . . . . . . . . . 95 CONTEÚDO MeuControllerServiceProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 MeuRouterServiceProvider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Concluindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 AutenticaçãocomJWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 JWT(JsonWebTokens) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 PordentrodeumJSONWebToken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 JWTemNossaAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 UtilizandoJWTnaNossaAPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Nossaautenticação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 AtualizandonossostestesdecriaçãoderecursosemnossaAPI . . . . . . . . . . . . . . . 112 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 GoogleAppEngine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Introdução Olá,sejabem-vindoaonossoe-booksobreomicroframeworkSilex,nestee-bookabordaremostodo opoderdessemicroframeworkcriadoporFabienPotencier.OSilexéummicroframeworkbaseado nos componentes do Symfony e foi criado para ser focado em aplicações pequenas, extensíveis e facilmentetestáveis! Em nosso e-book abordaremos a utilização desse fw com prática do começo ao fim e vamos criar uma API de eventos como estudo de caso. Através dessa API pretendemos mostrar tudo o que o Silex nos disponibiliza para a criação de aplicações utilizando suas ferramentas. Veremos como ele pode ser facilmente estendido e utilizaremos testes em nossa API do começo ao fim, para torna-la maisconsistentepossível! Por fim conheceremos o Google App Engine, um dos produtos do Google Cloud Platform1. Nesta sessão abordaremos todo o processo de deploy de nossa API e durante esse deploy mostraremos os conceitosnecessáriossobreoGoogleCloudPlatformesobreoGoogleAppEngine. Embarque conosco nessa jornada! Esperamos que esse conhecimento possa te ajudar profissional- menteenãopouparemosesforçosparaofereceromelhordurantesualeitura!! 1https://cloud.google.com Outros projetos Olá,antesdeembarcarmosemnossoassuntoprincipal,gostariadeteapresentaralgunsprojetosque trabalhonodiadia! Silex Casts CanalfocadoemconteúdossobreomicroframeworkSilex,possuimosdiversasaulasemnossocanal sobreosmaisdiversosassuntossobreomesmo! • CanalnoYoutube:Ver2 Code Experts Learning Possuo também uma plataforma de cursos online, que começou a rodar desde Novembro de 2016. Convido você a dá uma olhadinha em nosso material ou até mesmo sugerir melhorias e também assuntos que poderão se tornar cursos futuramente! Temos também um canal no youtube da plataforma. • CanalnoYoutube:Ver3 • Site:Ver4 Obrigadoevamosaocentraldessee-book!NossaAPIcomSilex! Boaleitura! 2http://youtube.com/SilexCasts 3http://youtube.com/CodeExpertsLearning 4https://codeexpertslearning.com.br Conhecendo e instalando o Silex Silex OSilexéummicroframeworkbaseadonoscomponentesdoSymfonyefoifeitopelomesmocriador desteframework,FabienPotencier.OSilexfoiconcebidoparaacriaçãodeaplicaçõespequenascom foco na agilidade, extensibilidade e para ser facilmente testável. O Silex provê um sistema de rotas muito poderoso, inclusive rotas é a área que ele se propõe a resolver porém através dos Services e Providers,conceitosqueveremosmaisafrente,vocêperceberáqueeleéfacilmenteextendidoesuas funcionalidadesrecebemoplusatravésdessasintegrações. Instalação Para instalar o Silex em nossos projetos é muito simples, precisamos apenas do composer5 para gerenciar nossas dependências. Mas afinal o que é o composer?! O composer é um gerenciador de dependências para aplicaçõesPHP,eleé baseado nasGEMsdoRubyenoNPM doNode.JS.Com o composervocêpodefacilmentegerenciarainstalaçãodepacotesdeterceiros,bemcomoprepararo seupacoteparaqueelefiquedisponivelparaosdesenvolvedoresqueutilizamessaferramenta.Tudo queprecisaremosédeumarquivocomposer.jsonnaraizdenossoprojeto.Utilizaremosapi-events comonomedonossofolder. Naraizdessefoldercrieumarquivocomposer.jsoncomoseguinteconteúdo: 1 { 2 "require" : { 3 "silex/silex" : "^1.2" 4 } 5 } O composer.json é o arquivo que o Composer lê para poder realizar as tarefas de download e instalaçãodospacotes,aliespecificados,paravocê. Agora precisamos instalar o composer em nosso projeto. O composer pode ser utilizado de duas maneiras,deformalocaledeformaglobal,abordareiaquiaformalocal.Parainstalá-loemsistemas Unixlike,vocêprecisarádalibcurldisponível.SevocêutilizaoWindows,baixeoexecutávelaqui6. 5https://getcomposer.org 6https://getcomposer.org/Composer-Setup.exe

Description:
Esse livro está à venda em http://leanpub.com/phpcomsilex-e-googleappengine. Essa versão foi 114. * @expectedException InvalidArgumentException. 115. * @expectedExceptionMessage Parameter invalid must be a CodeExperts\App\Ent\ Json Web Tokens, CodeExperts\App\Security\Token.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.