• Nenhum resultado encontrado

Luiz Anjos - Aplicações Web com Laravel Framework

N/A
N/A
Protected

Academic year: 2021

Share "Luiz Anjos - Aplicações Web com Laravel Framework"

Copied!
14
0
0

Texto

(1)

Aplicações Web com Laravel Framework

Luiz Carlos Gonçalves dos Anjos, Fabrício Geraldo Araújo

Instituto de Informática – Centro Universitário do Triângulo (UNITRI) Caixa Postal 309 – 38.411-106 – Uberlândia – MG – Brasil

luizgadao@gmail.com, fabaraujo23@gmail.com

Resumo: A utilização de ferramentas que auxiliam no desenvolvimento de aplicações web com PHP (Hypertext Preprocessor) vem aumentando diariamente. Diante disso esse trabalho tem o propósito de demonstrar as facilidades e os recursos ao utilizar o Laravel, que é uma dessas ferramentas. Muitos são os benefícios observados, mas foram destacados dois para melhor entendimento: template engine e a forma de trabalhar com dados utilizando o mapeamento de objeto relacional. Os resultados mostram que o Laravel auxilia o desenvolvedor nas tarefas que demandam mais tempo, sendo assim uma ótima ferramenta para o desenvolvimento de aplicações web.

Palavras Chave: PHP, Laravel, Model, View, Controller, Blade, Enloquent ORM, Banco de dados, SQLite.

1. Introdução

O PHP é uma das principais linguagens de desenvolvimento de aplicações web no mundo inteiro. Comprova ser uma plataforma consolidada no mercado, pois sobrevive desde a década de 90. Por ser uma linguagem que apareceu nos princípios da Internet o PHP tem uma enorme comunidade online e um mercado de trabalho que emprega profissionais ao redor do mundo em todos os níveis de conhecimento.

Junto a isso, a linguagem está sempre em evolução, recebendo correções de bugs e novas funcionalidades para auxiliar o desenvolvedor a criar aplicações cada vez mais performáticas, testáveis e robustas.

Com a popularidade do PHP entre empresas e desenvolvedores, foram surgindo diversos frameworks para solucionar ou agilizar o desenvolvimento de uma determinada tarefa utilizando-o.

Esse artigo tem por objetivo abordar um desses frameworks, o Laravel, que ganha em popularidade quando comparado a qualquer outro framework PHP no mercado de desenvolvimento web, pois com sua ampla variedade de ferramentas que auxiliam o desenvolvedor a criar aplicações de maneira rápida, simples e testáveis.

O artigo está estruturado com uma introdução que aborda a importância do PHP para o desenvolvimento de aplicações web. Na seção 2 será apresentada uma explicação mais detalhada sobre o PHP, bem como seu objetivo na Internet, recursos, e sua

importância para o desenvolvimento de aplicações. Além disso, ainda na seção 2, será mostrado o Laravel e suas principais características, bem como, a utilização do padrão MVC (Model, View, Controller) com esse framework. Na seção 3 será exposta a metodologia que foi utilizada para escrever esse artigo. Na seção 4 serão apresentados os conceitos teóricos e práticos aliados a um estudo de caso, assim poderá visualizar os benefícios que se tem ao utilizar template engine e um framework de mapeamento objeto-relacional. Para finalizar, na seção 5 será apresentada a conclusão desse artigo, com as considerações levantadas durante a pesquisa e realização do mesmo.

(2)

2. Desenvolvimento

2.1. PHP

PHP é uma linguagem de programação criada por Rasmus Lerdorf em 1994. É uma linguagem de código aberto que tem como principal objetivo a geração de conteúdo dinâmico para páginas da Internet. Como não era é possível executar algumas tarefas com o código HTML (HyperText Markup Language), tais como: gravar o estado da navegação do usuário em uma página web, consultar dados em uma base de dados, realizar operações aritméticas, estruturas de repetição e condição. O PHP foi criado para resolver esses tipos de problemas e outros que possam surgir [MELO; NASCIMENTO, 2007].

O PHP é baseado na linguagem de programação C. Em 1995 o autor

disponibilizou seu código fonte para que a comunidade de desenvolvedores contribuísse com a correção de bugs e implementação de novas features. Um fato interessante é que nessa época o significado da sigla PHP era Personal Home Page, alguns anos depois quando foi lançada a versão 3 em 1998, o significado foi alterado para Hypertext Preprocessor. Esse novo nome transmite mais credibilidade e confiança para que a adoção da linguagem fosse mais aceitável entre os desenvolvedores e organizações [DALL’OGLIO, 2009].

A linguagem PHP se encontra na versão 5, que foi lançada oficialmente em Julho de 2004. Essa versão tem um desempenho superior às outras versões quando se trata de programação orientada a objetos. Nessa versão a cópia de dados ficou mais eficiente, evitando a redundância de dados e contribuindo para a criação de aplicações mais robustas e modulares [DALL’OGLIO, 2009].

De acordo com Alexandre e Maurício (2007) essa versão tem suporte ao paradigma de programação orientada a objetos, manipulação de serviços REST (Representation State Transfer) e SOAP (Simple Object Access Protocol), suporte melhorado ao MySQL, novas bibliotecas SQLite e melhorias no gerenciamento de memória. Atualmente, a versão mais recente da linguagem é a 5.6 que foi lançada em 06 de agosto de 2015. No site oficial do PHP é possível encontrar a versão atual e as versões anteriores. É uma tecnologia open source, dessa forma possui uma ótima documentação e o código fonte está disponível para download.

O PHP é uma linguagem de sintaxe simples e declarativa, conta com uma comunidade de desenvolvedores ativa e uma ótima documentação disponível em português. Mesmo com 20 anos de idade, o PHP dá motivos satisfatórios para durar mais 10 ou quem sabe mais 20 anos, por ser uma referência consolidada no

desenvolvimento de aplicações web.

Junto a tais características, pode-se dizer que trata-se de uma tecnologia consolidada. O Facebook, por exemplo, é uma rede social em evidência que conecta bilhões de pessoas, foi desenvolvido com PHP. Várias outras páginas web de sucesso foram desenvolvidas utilizando-o, dentre as mais famosas podem-se destacar:

Wikipedia, Yahoo, WordPress, Flickr, Thumbler, e etc. [DONOHUE, 2015].

Em relação a Web Technology Surveys (2015) PHP é a linguagem mais utilizada no mundo para desenvolvimento de aplicações web, no total de 81,4%. Em segundo vem ASP.NET com 16,5% e em terceiro Java com 3%. Veja na Figura 1 o gráfico comparativo entre as linguagens de desenvolvimento web.

(3)

Figura 1- Ranking completo das linguagens e suas colocações (W3TECHS, 2015).

2.3. Laravel

Dentre tantos frameworks PHP, o Laravel é um dos mais recentes. Ele possibilita o desenvolvimento de modo mais simples e legível quando comparado aos demais do mercado.

Frameworks PHP não são novos, mas um dos mais novos é o Laravel. Desde a versão 3, Laravel explodiu em popularidade para se tornar um dos frameworks PHP mais populares e amplamente utilizado em um curto espaço de tempo. No momento da escrita, o repositório Laravel no GitHub tem mais estrelas do que seus contemporâneos mais maduros, como Symfony, CakePHP, CodeIgniter, e Yii [BEAN, 2015, p. 01].

2.3.1. Características do Laravel

Dentre as principais características presentes nesse framework PHP, pode-se destacar [BEAN, 2015]:

Modularidade: Laravel tem mais de 20 bibliotecas como dependências que são

tratadas como módulos independentes. Essas bibliotecas podem ser atualizadas com facilidade, pois são totalmente integradas com o Composer que é o gerenciador de dependência do framework.

Testabilidade: é possível testar uma página HTML por uma determinada rota

da aplicação e garantir que métodos são chamados em certas classes, a fim de checar se o código correto está sendo executado no momento correto.

Rotas: Laravel tem bastante flexibilidade na definição de rotas da aplicação. É

possível, por exemplo, conectar uma função anônima diretamente a uma ação do HTTP (Hypertext Transfer Protocol) como: GET, POST, DELETE e PUT.

Gerenciamento de configurações: Laravel tem uma abordagem para lidar com

diferentes tipos de ambientes, que pode ser modificado através do arquivo .env que contém todas as informações exclusivas de cada ambiente.

Construção de dados, migrations e seeds: inspirado pelo Rails, esse recurso

(4)

mantendo o controle de todas as alterações na base de dados com as migrations que possibilita o desenvolvedor reverter uma determinada ação na base de dados. Já para popular o banco de dados pode-se utilizar as seeds. Esse recurso permite ao

desenvolvedor criar dados fictícios para o ambiente de desenvolvimento.

Template Engine: para criar estruturas de páginas HTML pré-definidas, possibilitando que o template engine faça a injeção de conteúdo de maneira simples e dinâmica nas páginas que utilizam esse recurso.

Autenticação de usuário: como é uma tarefa comum em aplicação web,

Laravel vem com uma implementação para registrar, autenticar e relembrar senha. Command bus: é utilizado para despachar eventos da aplicação onde uma determinada classe vai saber lidar com esse evento e então realizar uma tarefa específica.

2.3.2. Gerenciamento de Dependências com Composer

Gerenciar todas as dependências em um projeto escrito em Laravel é uma tarefa

complexa e delicada, já que o mesmo depende de mais de 20 bibliotecas de terceiros. O composer é uma biblioteca escrita em PHP que veio para eliminar essa árdua tarefa gerenciando todas as dependências da aplicação.

2.3.3. Instalando o Laravel

Com o composer configurado, para instalar a versão mais recente do Laravel é necessário digitar o seguinte comando: composer create-project laravel --prefer-dist.

O composer clona e instala o Laravel, deixando-o pronto para uso. É um requisito ter no mínimo a versão 5.5.9 do PHP para que a instalação ocorra sem problemas.

2.3.4. Rotas

Rotas são os endereços de navegação da aplicação, que respondem determinadas

solicitações realizadas por um usuário que está interagindo diretamente com a aplicação. O arquivo responsável por gerenciar as rotas em uma aplicação é encontrado em: app/Http/routes.php. Por exemplo: para criação de uma determinada rota no Laravel pode-se utilizar o seguinte passo: Route::get(‘/’, function(){return “Olá Mundo.”;});. Essa rota executará a função anônima que foi definida para essa rota em específico, que por sua vez, retornará o texto “Olá Mundo” [SILVA, 2015].

A Tabela 1 explica sobre a ação e descrição de cada rota: Tabela 1- Ação e descrição das rotas.

Método Rota Descrição

GET /cliente Lista de todos os clientes.

GET /cliente:id Lista um determinado cliente

POST /cliente Insere um novo cliente

PUT /cliente:id Edita um determinado cliente.

DELETE /cliente:id Deleta um determinado cliente.

Arquivo de routes.php pode ser definido, por exemplo, da seguinte maneira: Route::get(‘/cliente’, function(){ “retorna todos os clientes.” });

(5)

Route::get(‘/cliente/{id}’, function(){ “retorna um determinado cliente.” }); Route::post(‘/cliente’, function(){ “insere um novo cliente.” });

Route::put(‘/cliente’, function(){ “edita um determinado cliente.” }); Route::delete(‘/cliente’, function(){ “deleta um determinado cliente” });

2.3.5. Controllers

Controllers é uma camada da aplicação que tem ações claras e muito bem definidas. Essas ações podem receber uma determinada requisição e executar uma série de ações para retornar uma reposta. Elas podem ser: buscar ou persistir dados no banco de dados, enviar um e-mail, retornar uma página HTML, validar dados e etc. [SILVA, 2015].

Para responder as solicitações criadas em routes.php, é uma boa prática de desenvolvimento organizar melhor esse comportamento em um método de um determinado controller previamente criado.

Controllers podem lidar com chamadas HTTP, desde que seja configurado no arquivos routes.php, como por exemplo: [Site Oficial Laravel, 20115]:

Route::get(‘/cliente’, ‘ClienteController@index); Route::post(‘/cliente’, ‘ClienteController@store); Route::get(‘/cliente’, ‘ClienteController@show); Route::post(‘/cliente’, ‘ClienteController@edit); Route::get(‘/cliente’, ‘ClienteController@delete) ;

(6)

Figura 2- Exemplo de um Controller

2.3.6. Views

Essa é a opção mais utilizada para entregar páginas HTML para o usuário final

utilizando o Laravel. Para que não seja necessário misturar código HTML dentro de um método do controller, é recomendável que o desenvolvedor encaminhe essa tarefa para camada view do Laravel. Ela será invocada por algum método do controller com a responsabilidade de renderizar o HTML [SILVA, 2015].

Além disso, pode-se utilizar recursos do template engine conhecido como Blade, que contém uma série de recursos e facilidades para agilizar o desenvolvimento de páginas HTML sem a necessidade de ficar referenciando tag de inclusão de código PHP [Site Oficial Laravel, 2015].

A Figura 3 apresenta a estrutura de um controller que está retornando uma view definida na Figura 4. O controller envia para a view uma variável “$cliente” e a view exibe essa variável dentro da tag de título h1. Já para exibir essa variável de forma convencional no PHP é necessário informar a tag de inclusão de código dessa forma: <?php echo $cliente ?>

(7)

Figura 3 - Controller retornando uma view

Figura 4 - View utilizando recurso do Blade sem necessidade de inserção da tag <?php ?>

2.3.7. Models

Models no Laravel não se refere apenas a uma estrutura de dados, é a camada onde ficam definidas todas as regras de negócio, entidades e classes de acesso ao banco de dados [SILVA, 2015].

O Laravel tem um ORM (Object Relation Mapping) conhecido como Eloquent que é utilizando para reduzir a impedância da programação orientada a objetos

utilizando banco de dados relacionais. Cada tabela no banco de dados é representada por uma determinada classe da aplicação e os registros da tabela são representados por instância de classes correspondentes.

Essa técnica permite que o desenvolvedor não precise utilizar a linguagem SQL (Structure Query Language), possibilitando utilizar uma interface de programação simplificada para manipulação e persistência de dados.

A Figura 5 apresenta uma migration que cria uma tabela no banco de dados referente a um determinado model da aplicação.

(8)

Figura 5 - Exemplo de criação de uma tabela com Laravel. 3. Metodologia

Esse trabalho é um estudo de caso que teve como objetivo criar uma aplicação

utilizando o framework Laravel da linguagem PHP, mostrando as facilidades em utilizá-lo. Para isso, foi criado um CRUD (Create, Read, Update, Delete) com banco de dados SQLite.

A aplicação foi desenvolvida pelo IDE (Integrated Development Environment) PhpStorm que é utilizado para editar e criar códigos que utilizam a linguagem PHP.

Os resultados serão mostrados destacando procedimentos que o Laravel realiza de forma mais simples, rápida e eficiente, quando comparado ao desenvolvimento do mesmo procedimento no PHP convencional, ou seja, PHP puro sem nenhum

framework.

Para isso, realizou-se uma pesquisa bibliográfica baseada em livros e artigos da área para o embasamento teórico do estudo.

A Figura 6 mostra como ficou o aspecto visual do projeto e os botões de cada ação do CRUD.

(9)

Figura 6 – Projeto desenvolvido para realizar o estudo de caso. 4. Resultados e Discussão

Após o desenvolvimento da aplicação podemos destacar a comparação entre dois procedimentos: criação do template padrão e a manipulação de dados com o Laravel.

Para criar um arquivo de template padrão no Laravel, o arquivo deve ser criado em: resources/view/template.blade.php. Um fato importante é que todo arquivo que utiliza a template engine deve ter a extensão .blade.php. Esse arquivo contém todo HTML em comum entre as páginas web. É utilizada a marcação @yield para seção que deverá ser sobrescrita pelas outras views, que por sua vez, herdam o layout principal e sobrescrevem as seções definidas.

A Figura 7 demonstra uma parte do arquivo template.blade.php com as seções: “title” linha 8 e “content” linha 38. Essas seções serão sobrescritas pelos arquivos que herdarem esse template.

(10)

Figura 7 - Criação de um template HTML padrão.

Para uma página herdar esse template padrão que foi criado, basta utilizar a tag @extends (‘template’) e para substituir as seções utiliza-se a tag @section (‘nome seção’) para marcar o início do conteúdo HTML que vai ser inserido e para finalizar é necessário informar o final do conteúdo inserido com a tag @stop.O Laravel simplifica bastante essa tarefa de criação de templates. O desenvolvedor não precisa se preocupar com as famosas tag de inclusão de arquivos PHP, como o include. Da forma

convencional, o desenvolvedor precisaria criar dois arquivos com conteúdo HTML e incluí-los em cada página de forma manual.

A Figura 8 mostra como é criada uma página HTML com o include do PHP. Dessa forma o desenvolvedor tem que incluir os arquivos PHP de forma manual, que é um processo mais trabalhoso e lento, enquanto no Laravel é um processo rápido e dinâmico.

(11)

Figura 8 - Criação de uma página HTML com include.

Na Figura 9 o código que está herdando o template principal é bastante simples e não necessita de includes e tag de inclusão de código PHP.

Figura 9 - Criação de uma página HTML com Laravel.

Eloquent ORM é utilizado para manipulação de dados, que é um framework integrado ao Laravel. É possível executar operações no banco de dados relacional sem necessidade de utilizar queries SQL, permitindo o acesso aos dados de uma forma mais rápida, simples e fluente pelo desenvolvedor.

(12)

A Figura 10 demonstra o controller buscando todos os posts armazenados na aplicação sem necessidade de abrir e fechar a conexão com o banco de dados e informar a query SQL para tal tarefa. Após a busca, o resultado é enviado para a view

correspondente.

Figura 10 – PostController selecionando todos os posts.

Na Figura 11 (view que mostra todos os posts) foi utilizado o template padrão da aplicação que recebe como parâmetro os posts encontrados, fazendo uma interação para listá-los na página HTML.

Figura 11 – View que demonstra todos os posts.

Na Figura 12 foi realizada uma busca no banco de dados SQLite no PHP de forma convencional. Nota-se que a quantidade de código digitada na aplicação fica bem maior, pois é necessário descrever em código as seguintes etapas: abrir e fechar a conexão com o banco de dados, escrever uma query, executá-la no banco de dados e interar nos resultado encontrados.

(13)

Figura 12 – Selecionando posts no PHP convencional.

Todo esse processo demonstrado na Figura 12 pode ser resumido em apenas uma linha com o Eloquent ORM do Laravel, é a linha: \App\Post::all(); que está na Figura 10 na linha 15.

5. Conclusão

Com o template engine do Laravel, o Blade, o ganho de produtividade é realmente satisfatório, uma vez que o desenvolvedor não necessita ficar gerenciando e lembrando quais includes devem ser inseridos nas páginas HTML de forma manual, e nem

inserindo a tag <?php ?> para embutir código PHP na página HTML. Isso é uma boa prática de desenvolvimento que a comunidade de desenvolvedores apoia e que é praticada no dia-a-dia, pois o desenvolvedor consegue criar e editar as páginas HTML do projeto de forma mais simples e rápida, contribuindo com a manutenabilidade da aplicação.

O Enloquent é uma ótima solução para inserção e manipulação de dados. Ele abstrai a parte de acesso aos dados sem exigir que o desenvolvedor tenha um amplo conhecimento com o SQL, além de diminuir muito a quantidade de código da aplicação.

No Laravel existem diversas ferramentas para auxiliar o desenvolvedor a criar aplicações de forma rápida, simples e robusta. Com a ajuda do framework, o

desenvolvedor tem mais tempo para focar no que realmente importa, que são: regras de negócio, design e usabilidade da aplicação.

(14)

6. Referências

BEAN, Martin. Laravel Essencials. Birmingham: Packt Publishing, 2015.

DALL'OGLIO, Pablo. PHP Programando com Orientação ao Objeto. 2. ed. São Paulo: Novatec, 2009.

DONOHUE, Michael. PHP. Disponível em: <https://coderfactory.com/posts/top-sites-built-with-php>. Acesso em: 30 set. 2015.

FREEMAN, Eric; FREEMAN, Elisabeth. Padrões de Projeto: Design Patterns. 2. ed. Rio de Janeiro: Alta Books, 2009.

MELO, Alexandre Altair de; G.F.NASCIMENTO, Mauricio. PHP Profissional: aprenda a desenvolver sistemas profissionais. São Paulo: Novatec, 2007. SILVA, Wesley Willians Ramos da. Laravel 5 Essencial: Alta produtividade no

mundo real. São Paulo: Learnpub, 2015.

Site Oficial Laravel. Disponível em: http://www.laravel.com. Acesso em: 05 out. 2015. Stack Overflow. Disponível em:

http://stackoverflow.com/questions/29594105/mvc-is-it-model-to-view-or-controller-to-view. Acesso em: 12 out. 2015.

W3TECHS. Usage of server-side programming languages for websites. Disponível em: <http://w3techs.com/technologies/overview/programming_language/all>. Acesso em: 30 set. 2015.

Referências

Documentos relacionados

Inicialmente como professora de inglês língua estrangeira no ensino básico e secundário em Portugal (sete anos), posteriormente como professora de português língua

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

Foi apresentada, pelo Ademar, a documentação encaminhada pelo APL ao INMETRO, o qual argumentar sobre a PORTARIA Nº 398, DE 31 DE JULHO DE 2012 E SEU REGULAMENTO TÉCNICO

Neste trabalho avaliamos as respostas de duas espécies de aranhas errantes do gênero Ctenus às pistas químicas de presas e predadores e ao tipo de solo (arenoso ou

O artigo tem como objeto a realização, em 2013, do Congresso Internacional Justiça de Transição nos 25 anos da Constituição de 1988 na Faculdade de Direito da UFMG, retratando

In an attempt to overcome the local resistance that inevi- tably accompanies having a natural site classified as a national park, the French government passed a new law in 2006

Isto mostra assim a posição contra que os inquiridos têm em relação a estes produtos embora haja uma percentagem de 5% que diz que o valor mínimo era de 0€,

O CES é constituído por 54 itens, destinados a avaliar: (a) cinco tipos de crenças, a saber: (a1) Estatuto de Emprego - avalia até que ponto são favoráveis, as