+ All Categories
Home > Documents > laravel5essencial

laravel5essencial

Date post: 17-Aug-2015
Category:
Upload: altanir-barbosa
View: 11 times
Download: 0 times
Share this document with a friend
Description:
Material para o Laravel 5
Popular Tags:
90
Transcript

Laravel 5.1: EssencialAlta produtividade no mundo RealWesley Willians Ramos da SilvaEsse livro est venda em http://leanpub.com/laravel5essencialEssa verso foi publicada em 2015-06-10This is a Leanpub book. Leanpub empowers authors and publishers with the Lean Publishingprocess. Lean Publishing is the act of publishing an in-progress ebook using lightweight tools andmany iterations to get reader feedback, pivot until you have the right book and build traction onceyou do.2015 Wesley Willians Ramos da SilvaDedico esse meu primeiro livro minha princesa Sarah.ContedoIntroduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Instalao via Laravel Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Instalao direta via composer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Executando Laravel pela primeira vez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6A estrutura do Laravel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Estrutura de pastas e arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Ciclo de vida de uma aplicao Laravel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Configurando sua aplicao Laravel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Alterando o Namespace de sua aplicao . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Configurando banco dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Configurando envio de emails. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Configurao do ambiente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Concluindo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Trabalhando com Rotas, Controllers e Views . . . . . . . . . . . . . . . . . . . . . . . . . 16Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Voltando s Rotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Apontando para uma view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Falando sobre Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Configurando um banco de dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Criando nosso primeiro Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Rumo ao primeiro CRUD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Listando nossos Produtos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Criando novos produtos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Removendo registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Editando registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52CONTEDOAjustando rotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Linkando listagem de produtos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Relacionando Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Criando Model e Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Criando relacionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Tabela Pivot (ManyToMany). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Container de servios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Servios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Dependency Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Containers de servios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77IntroduoSabemos que o mundo PHP est evoluindo exponencialmente, principalmente depois das diversasiniciativas de interoperabilidade como o PHP-FIG com suas PSRs e o surgimento do composer, quenos permite instalar quaisquer tipos de biblioteca de forma plug n play .Com o ecosistema todo aquecido, onde o compartilhamento de bibliotecas e frameworks tornou-sealgo extremamente simples, muitos projetos rapidamente comearam a ficar em evidncia, incluindoo Laravel Framework.Tenho que admitir que pela primeira vez que ouvi falar no Laravel, meu primeiro pensamento foi (eacredito que de muitos outros desenvolvedores tambm): Mais um framework PHP? Para que? Quais as vantagens que esse camarada pode trazer em cima de frameworks to bem feitoscomo: Zend Framework, Symfony, etc.?Admito que simplesmente ignorei o projeto.Quem me conhece, sabe que sou uma pessoa extremamente focada e raramente fico divagando entremuitos projetos. Apesar de gostar de experimentar muito, totalmente impossvel ficar testandomilhares de bibliotecas e frameworks o tempo todo.Conforme o tempo passou, percebi que a cada dia muitos desenvolvedores comearam a falar maise mais sobre o Lavarel, e nesse ponto resolvi instalar e dar uma brincada.Quando fiz a instalao da verso 3 em meu computador, simplesmente fiquei extremamentedesapontado. O Laravel me lembrava o Zend Framework 1, com muitas simplificaes, e algumas mprticas de desenvolvimento, que para o contexto em que estvamos vivendo eram inadimissveis.Logo depois, o Laravel comeou a utilizar muitos componentes do Symfony 2, um dos frameworksque mais admiro, e nesse ponto quando fui analisar novamente o framework me fiz a seguintepergunta: Por que vou utilizar o Laravel, se posso usar diretamente o Symfony?Por outro lado, e isso fato, a popularidade do Laravel cresceu ainda mais e esse ponto no pode serignorado. Quando algo se torna popular, pode ter certeza que o mercado de trabalho ser afetadoinstantaneamente.Finalmente em 2015 tivemos o release da verso 5 do Laravel, e com muitas novidades em relao averso 4. Tambm j podemos ver que claro que o framework sim est aplicando muitos conceitosinegavelmente bem bacanas, principalmente para quem gosta de mgica em um framework.Nesse ponto voc deve estar se perguntando: Como assim mgica?Introduo 2Sabemos que os frameworks tem o grande objetivo de agilizar nossa vida, evitando reuso de cdigoe trazendo muitas funcionalidades prontas, por outro lado, existem frameworks que apesar detrazerem todos esses recursos e facilidades prontas, eles diretamente exigem que voc trabalhe comtodos esses componentes de forma explcita, ou seja, declarando tudo e como cada item vai serutilizado. Um exemplo muito claro desse tipo de framework o prprio Zend Framework 2. CadaController, Helper, Service, Factory, etc precisam estar claramente registrados, manualmente, nosarquivos de configurao.H desenvolvedores que no gostam desse tipo de abordagem, pois acham que o processo dedesenvolvimento fica altamente burocratizado. Por outro lado, h desenvolvedores que preferemclaramente isso, uma vez que eles tem certeza e controle de tudo que est acontecendo por trs doframework.Umexemplo que gosto de mencionar emrelao a isso : Voc pode ter umcarro comcmbio manuale automtico. Para muitos motoristas, usar cmbio manual algo altamente mais prazeroso, pois elespodem ter mais controle do carro; por outro lado, h motoristas que simplesmente no querem ter100% de controle, e no fazem a mnima questo de saber qual a prxima marcha que ele utilizar.Pois . Eu poderia claramente dizer que o Zend Framework 2 o carro com cmbio manual, j oSymfony, o com cmbio automtico. Agora voc deve estar se perguntando: e o Laravel?OLaravel carro da Google que dirige sozinho! Ele to mgico que realmente a nica comparaoque encontrei. Agora veja bem, no estou dizendo que isso bom ou ruim, estou dizendo que issodepende e muito do perfil do desenvolvedor.Para que eu no fique dando apenas exemplos abstratos, vamos tentar pegar um exemplo concretode um recurso do Laravel 5 chamado de: Method Injection.Imagine que dentro de uma classe de Controller, voc possui uma ao e essa ao necessita receberem uma dependncia de uma classe qualquer.Seguindo os exemplos que dei entre: ZF 2 e Laravel, temos as seguintes resolues para esseproblema.No Zend Framework 2:Dentro da classe do controller, teramos ummtodo chamado de setMyObject(MyNamespaceMyObject$object).1 // IndexController.php23