Programação Web – #1: Introdução
Esta rubrica tem como objectivo abordar a framework PHP Laravel.
Numa era em que a Web é tão natural para nós, faz todo o sentido que quem queira dar uns passos na programação, os dê de forma sustentada. Como se costuma dizer, perceber o que está por debaixo do “capot”, dominando assim conceitos e definições. Com este pressuposto garantido, a geração vindoura de programadores, e toda a comunidade, será maior e melhor, se todos aplicarem as melhores práticas.
As linguagens de programação são uma ferramenta nas mãos de um artesão. A forma como é implementada é que faz a diferença no produto. Assim, várias linguagens como PHP, Ruby, Python, VB, C#, entre outras, são todas ferramentas, e todas permitem fazer o mesmo produto.
Cada vez que é iniciado um projecto, é necessário recomeçar do zero?
Felizmente, a resposta é: não! Com ferramentas, podemos construir mais ferramentas. Uma má prática seria fazer “copy-paste” de código fonte, repetido por todo o projecto. O caminho certo é abstrair código fonte para funções. A um conjunto de funções chamamos framework.
Com o passar do tempo e com natural evolução, todas as linguagens de programação viram nascer frameworks, que assim aceleram o desenvolvimento de aplicações e definem standards. Ruby viu nascer o Rails, Sinatra. Python viu a Django, web2py. Temos a Microsoft .NET.
Garanto-vos que não haverá melhor caminho a seguir que o de uma framework! Não se vai reinventar a roda, melhor que as frameworks modernas.
Aplicações Web
É um desafio enorme ao meu poder de síntese, conseguir explicar num só artigo todas as possibilidades.
Numa aplicação Web, existe um pedido (request) a um servidor. É executado código pelo servidor (backend), que devolve uma resposta. Esta resposta, interpretada pelo nosso browser, deverá conter código HTML, CSS e Javascript. A partir deste momento, poderão haver execuções de código a nível local. Existem também frameworks de frontend, tais como jQuery, AngularJS, VueJS, ReactJS.
Estas manipulam o documento HTML e CSS. Podem também elas fazer requests a um backend de forma assíncrona. São os requests XHR/Ajax, que tipicamente devolverão respostas JSON, interpretadas assim pelo frontend, ao invés de vermos a página Web a mudar, dando a sensação de uma aplicação desktop.
Da mesma forma, uma aplicação Web pode ser para execução a partir de uma aplicação nativa, seja de Windows, iOS ou Android (RESTful API).
É, de facto, um mundo gigante. Mas, qualquer caminhada de muitos quilómetros começa com um simples passo. Com tempo, vamos abordar estes temas.
Como escolher entre uma linguagem ou framework?
Não há uma resposta certa ou errada. São muitas as variáveis. O PHP é uma componente muito forte no mundo open-source, alavanca projetos como o WordPress, Joomla, Prestashop, Magento e muitos outros. Frameworks populares PHP são a Yii, Symfony, Zend, Codeigniter.
No entanto, a sua sintaxe e características fizeram com que, nos últimos anos, se perdesse o encanto de programar. É algo em que o Laravel veio dar uma lufada de ar fresco! Está a ser mesmo divertido desenvolver Web! Consegue acelerar bastante o desenvolvimento, ser bastante simples, ou poderosa, dependendo de quem for a "conduzir"!
Laravel e o desenvolvimento moderno
Apenas alguns tópicos:
- GIT – Controlo de versões
- Consola Artisan
- Composer – Gestor de Packages
- Eloquent Active Record
- Routes
- Autenticação
- Migrations – Controlo de versões de DB
- Blade – Templates
- Testes automáticos
- Agendador
Convido o leitor a consultar a documentação aqui.
Veja, sobre o lado esquerdo, os tópicos, e tudo aquilo do qual podemos tomar partido. Será mesmo necessário repartir por vários artigos, a explicação de tudo o que podemos aproveitar.
Resumindo
O objectivo desta rubrica será colocá-lo perante uma fantástica framework PHP, sem que antes se deixe de encaixar um mínimo de pressupostos, para entender o que se está realmente a passar aquando da programação.
Iniciar um rumo sem saber o mínimos de Programação Orientada a Objectos pode tornar-se um caminho sinuoso, qualquer que seja a linguagem ou framework!
Assim, gostaria de recolher algum feedback sobre a receptividade a este caminho. A ideia passa por explicar conceitos, complementando com um vídeo! O roadmap tem como característica ser muito versátil, pode (e deve) ser influenciado por vós!
Roadmap – proposta para os próximos passos:
- Hello world! – A primeira aplicação em qualquer linguagem
- PHP - variáveis, funções, DRY (Don’t repeat yourself)
- Classes e Objetos, Propriedades e Métodos
- Extensão de Classes, Métodos encadeados
- Namespaces e Interfaces
- Consola e linha de comandos
- Primeira página – HTML – Conteúdo dinâmico
- Browser Inspector – Ferramentas de Programador
- Bem-vindo ao Laravel!
- Site estático clássico 4 páginas, com Templates
- Bases de Dados
- CRUD – Create, Read, Update, Delete
- Desenvolvimento de WebApp, open-source, a definir pelos leitores!
Há um sem fim de caminhos, mas pretendo ser conduzido por vós, receber feedback e conhecer necessidades reais! Que vos parece?
Este artigo tem mais de um ano
Finalmente alguém com conhecimentos A SÉRIO!!!!
Programo usando o laravel como framework em vários projectos, recomendo vivamente, face ao codeigniter foi mesmo uma lufada de ar fresco.
É de mim ou o codeigniter da 10-0 ao Laravel a nível de dificuldade de instalação/requisitos, principalmente em shared hosting?
shared hosting ? A serio?
Olá Morbidos.
Não estou a ver, para além do Composer e acesso Shell, o que será impeditivo ao standard.
De qq modo, tudo isso é contornável e possível.
De resto, não vou discutir pontos onde cada uma dá 10 ou mais a 0 🙂
O objetivo da rubrica não é ajudar nem escolher linguagem nem framework.
Não se trata de ser impeditivo ou não mais sim teres de trabalhares com o que te dão e não o que queres e esta resposta já fica para o Sr. Nuno Rodrigues. Como respondeu e muito bem o Laravel passa por primeiro ter acesso a Shell e depois pela instalação do Composer . O próprio servidor necessita de determinados requisitos e não estamos apenas a falar na versão do PHP como acontece com o Codeigniter.
Mas o ponto principal nem é este, com o Codeigniter facilmente se consegue criar uma aplicação ou Web site em que a instalação é quase só chegar e copiar para o servidor, pois não precisa de Composer, shell ou outras dependências.
Muito bom, venha 🙂
Uma proposta, explicar como passar o laravel de localhost to live host.
Podes sempre comprar uma vps e fazer como se fosse um localhost 🙂 registas um dominio e toca a andar
E ter o IDE em ambiente remoto, RDP/VNC ??
No desenvolvimento moderno usam-se virtual machines via vagrant.
Entre outras coisas, como provisioning, temos o projeto na nossa máquina, Windows, OSX ou Linux, e a pasta de projeto é mapeada na VM.
Assim, desenvolvemos no nosso IDE, e as execuções, via ssh ou requests http são executado pela VM, com ambiente semelhante ao de produção, e mais, conseguimos que todos os programadores estejam a testar no mesmo environment.
O Laravel apresenta assim, a Homestead. https://laravel.com/docs/5.2/homestead
Há muitos projectos que o pplware nem terminou por exemplo este aqui
https://pplware.sapo.pt/internet/seo-sabe-o-que-e-parte-1/ onde anda a parte 2? Já vai la algum tempo!
Uma dica, não começem projectos ou series que não terminaram 😉 Este comentário de certeza que nem vai ser aprovado como todos os outros mas whatever..
PS: Resolvam os comentários isto porque quando envio um comentário não aparece “a aguardar moderação ou aprovação” e algumas vezes funciona, e começarem a usar disqus? não!? 😛
Boas Filipe. O teu IP estava marcado com SPAM novamente. Está tratado.
Quando à tua critica, bom por acaso há alguns que depois de vários artigos ficam sem um fim à vista, é verdade. Esse que referiste até não, há já continuidade que vai sair em breve. São temas sempre actuais e que espaçamos no tempo (pese o facto desse ter já tempo a mais). Mas em breve vão sair mais alguns dessa saga. Fica atento.
Mas deixa-me dar-te uma nota informativa: há artigos, rubricas, que com o passar do tempo eles acabam por ser úteis até pelo que as pessoas partilham. nesse que falaste, se fores aos comentários, há informação muito relevante.
Laravel a melhor framework PHP, muito parecida com o Ruby on Rails, bom trabalho João Patrício 🙂
Hugo Cura, acho que o titulo podia fazer referencia a Laravel e que é uma framework PHP.
ola João santos eu sou principiante em programação web quero dar os meus primeiro passo podes ajudarme
Excelente iniciativa!
Não tendo muita experiência, ainda, em programação web, parece-me um roadmap acertado em que são abordados vários pontos fundamentais que estão numa ordem adequada.
Boraaaaa….
Excelente iniciativa !!
Podemos contar com uma periodicidade, no mínimo, semanal?
A aguardar os seguintes 😉
Venha de lá isso. A minha formação não tem nada a ver com informática e de programação sei o básico do html à conta de templates de blogs. É sempre bom aprender mais qualquer coisa.
a sua ultima versao é 5.2 e não 5.1, que aponta o link da framework. Esta framework tornou-se popular não só pela sua versatilidade e simplicidade mas sim pela quantidade de informação que eles fornecem, através do comhecido canal “Laracast” (https://laracasts.com) para além do website oficial (https://laravel.com/docs/5.2/releases).
na proxima sessão devia, ou acho, que deveria seguir pelos seguintes tópicos:
– PHP – variáveis, funções, DRY (Don’t repeat yourself)
– Classes e Objetos, Propriedades e Métodos.
Desde já agradeço a iniciativa pela de arrancar com esta rubrica. 😉
Olá Jedi. Obrigado!
A 5.1 é versão LTS (Long Term Support), e daí a escolha para os tutoriais. A 5.2 acrescenta algumas coisas, mas os conceitos basilares para uma framework com poder enterprise estão também na 5.1. A velocidade das releases é muito elevada, num ecossistema fantástico. No entanto, as mudanças são por vezes contrárias à estabilidade.
A 5.1 LTS terá bug fixes e security fixes, durante 2, e 3 anos, respetivamente – Junho 2017 e Junho 2018. How cool is that?!
O Laracasts é altamente recomendável. Espero conseguir estar para estes tutoriais, como o Jeffrey Way para os seus. Fez, e faz, um excelente trabalho, notável!
ok, brigado. Tem depois explicar quando chegar ao tema composer, com descarregar com versão LTS, porque com os exemplos, neste caso o Blog, que contem no website de laravel vai buscar a versão mais recente. 😉
Esta iniciativa é muito bem vinda! Mas atenção, nos futuros artigos a informação disponibilizada através do vídeo é mais acessível e poderá ter um efeito demonstrativo mais interessante. Creio que seja a melhor opção para estes artigos. Again, parabéns!
Caro João,
De pronto ocorrem-me apenas as seguintes palavras:
Excelente iniciativa. Muito obrigado!
Obrigado pelos comentários!
André Narciso, deploy da aplicação será tido em conta!
Jorge, Sim, semanalmente. Tentarei ajustar o tamanho do artigo para que tenha conteúdo o suficiente para esse período. Claro que vai variar com a experiência de cada um, vamos tentar fazer pelo melhor!
Gostei muito da iniciatica!
Gostaria de perceber se um iniciante poderá aprender a usar esta linguagem de programaçao por esta rubrica ou necessita de ter bases anteriores?
Sera necessario instalar um programa presumo?
Olá Lourenço,
Estou convicto que poderá guiar-se por esta rubrica, sem bases anteriores.
No entanto, não irá certamente dispensar, que tome tempo para treinar, ver outros exemplos, documentação, e assim.
Serão necessários vários até, mas iremos acompanhar sempre a sua instalação e configuração.
Serão usadas ferramentas gratuitas e/ou open-source.
Obrigado pelo esclarecimento, espero poder aprender alguma coisa e tenciono praticar no pouco tempo que tiver
será possível fornecerem esses outros exemplos e documentaçao ou nem por isso?
Promete!
Os meus parabéns.
A aguardar 🙂
Assino de cruz 🙂
actualmente estou a usar PulseCMS para coisas mais simples, mas prevejo o uso do Laravel a curto prazo
Excelente… aguardo pelos próximos episódios.
Completamente de acordo com o David.
De qualquer forma queria dar os parabéns ao Pplware e João Patrício por esta excelente iniciativa.
Bem hajam.
Bom trabalho, vou ficar à espera! Obrigado
Uma vez que a programação Web, seria interessante para além deste tutorial, desenvolver outros tutoriais para cada uma das temáticas de desenvolvimento web. São tantos os recursos que não sabemos bem por onde começar e quais é que devemos utilizar. Algumas temáticas interessantes HTML5, Java, jquery, JSON, Bootstrap. Responsive, AngularJS entre outras. Com tantos recursos, qualquer dia já não precisamos do C# nem do VB.NET. Muitos Parabéns pela iniciativa
+1
Obrigado Tiago.
Não confudam Java com Javascript.
Uma linguagem de backend será sempre necessária 🙂 Afinal de contas, como lhe chega o código para ser executado localmente?
Todos os recursos que fala são muito válidos!
Pode ser que lá à frente na rubrica, após o templating, surja alguém mais vocacionado em frontend para dar uma ajudinha 🙂
É esse o sentido e espírito da comunidade!
NodeJS -> Javascript Backend.
A grande vantagem de Laravel é ser tão boa como Ruby on rails , com a vantagem de ser em php que é muito melhor que ruby .
( sim se procurarem na net o grande problema de RoR é o ruby ser limitado e ser lento sem margem para melhoria).
Muito muito bom. Laravel é incrivel. Vou acompanhar.
Obrigado pelo “curso”! Espero que o leves a bom porto.
Ótimo. Vai dar para aprender mais pormenores de certeza.
Excelente tópico,irei de certeza acompanhar todas as matérias apresentadas.
Parabéns ao Hugo Cura ou João Patricio(não entendo bem que foi o autor) ou a ambos.
Este link tem uma serie de videos muito bom para quem quer começar laravel
https://laracasts.com/series/laravel-5-fundamentals/
Tenho trabalho com CakePhP 3.0 e também aconselho , não é tao fácil . Mas é muito poderoso 🙂
Uso YII2 regularmente, experimentei o Laravel e não vi em que esta framework poderia ser melhor. Será que alguém com conhecimentos mais avançados tem algo a acrescentar? É porque o YII2 a nível de estrutura e para criação de REST API parece melhor alem de que o gerador de modelos (CRUD) pareceu-me muito melhor. E quanto a sintaxe ambos são fáceis de perceber.
Roberto, embora o Laravel tenha todas as ferramentas para criação de webservices REST, podes sempre recorrer ao Lumen – https://lumen.laravel.com/ – que nasceu do Laravel, mas mais compacto, sem muitas features do laravel – aparentemente não são necessárias – e por isso mais rápido.
Olá Roberto,
Antes de mais, a Yii2 é uma excelente framework. A Symfony, a Phalcon. Muitas.
Qualquer opinião é uma opinião. Como referi no artigo, qq linguagem em qq framework consegue chegar ao mesmo produto final. Claro que existirão diferenças entre a partida e a chegada.
Quanto a alguém com conhecimentos mais avançados, Taylor Otwell, Jeffrey Way, Daylee Rees, Chris Fidao, Philipp Brown, Matt Stauffer, são alguns dos que sigo, e confio plenamente em qualquer um deles para acrescentar algo de valor.
Estou sempre recetivo a discussão construtiva e especialmente, a aprender.
Em minha opinião, temos o fantástico IoC Container, que permite registar, ()e resolver) classes, singletons e instances. Permite associar interfaces a concretions. Desta maneira, alterando o Service Provider correspondente, podemo mudar de repente uma implementação sem alterações ao código. (liskov substitution principle) Mantendo sempre a testabilidade.
Existe também dependency injection ao nível do method, que abre horizontes no que diz a validações e pipelines.
Para não me alongar mais, destaco o Serviço de filesystem Cloud, via vários drivers/serviços, Task scheduling, Queue worker.
Quanto a gerador de modelos, creio que se refere a scaffold, e não ao modelo(que representa abstração da DB). Para tal, podemos acrescentar à framework um package way/generators, via composer + service provider, e temos um gerador de scaffold onde podemos ter os nossos templates personalizados, adequeados ao projeto.
Quanto a sintaxe, não quis expressar dificuldade, mas expressividade!
Não sei o rumo do Laravel, nem se daqui a 5-10 anos continuará no meu cinto de ferramentas, ou se não surge algo melhor.
Creio que o truque está em perceber bem a linguagem base, OOP, e fazer o jogo de cintura entre estabilidade e inovação, que são coisas diferentes.
Estou disponível para mais umas trocas de informação, tem o link para contacto no artigo, sempre ao dispor para aprender!!
+1
Parabéns pela iniciaitiva! @João Patrício
A roadmap parece promissora. Espero que este projecto avance. 🙂
Parabéns pela iniciativa, acho que iremos apreender muito
Fantástico! Vou estar atento a esta rubrica para ver se volto a ganhar o bichinho da programação
Acho excelente iniciativa!
Podia existir uma forma de nos “inscrevermos” em certos tópicos para quando sair uma parte dois ou três ou outra qualquer sermos avisados.
Venho cá quase todos os dias mas se o tópico que estou a acompanhar num dia em que eu por acaso não consiga cá vir acabo por perder algo que gostava de seguir!
Fica a sugestão 🙂
Bom trabalho!!
Eu concordo, já senti a necessidade do mesmo.
Laravel tem comunidade Portuguesa em:
https://groups.google.com/forum/#!forum/laravel-portugal
e Slack laravel-portugal.slack.com
Obrigado.
Obrigado a todos pelos comentários, e votos de confiança!
Espero conseguir fazer chegar esta rubrica, àquilo que prevejo na minha mente 🙂
Caso necessites de ajuda avisa.
Já agora para quem necessita somente de um framework de simple e muito poderoso pode sempre dar uma olhade-la ao
slimPHP
Pedro Martins
Bota para a frente! Manda vir disso que a gente agradece 🙂
Muito bom mesmo, desde já, parabéns pela iniciativa acredito que a comunidade irá ficar grata. 😉
Esperemos que o projecto chegue a bom porto e que seja proveitoso para todos os interessados nas matérias abordadas.
Parabéns por mais esta iniciativa.
Cada vez que é iniciado um projecto, é necessário recomeçar do zero?
Felizmente, a resposta é: não! Com ferramentas, podemos construir mais ferramentas. Uma má prática seria fazer “copy-paste” de código fonte, repetido por todo o projecto. O caminho certo é abstrair código fonte para funções. A um conjunto de funções chamamos framework.
———–
Sendo que se pode aproveitar código fonte feito (funções e/ou Frameworks), até que ponto é que se estará a barrar com direitos de autor? Haverá assim tanto código livre? Não poderão surgir empresas que se aproveitam do chamado “código fonte livre” para criarem as suas próprias aplicações de “Código fechado”?
Gostaria de alguns esclarecimentos, por favor.
Obrigado.
Existe muito software código fonte livre, como refere.
Se por um lado, uns interpretam como se aproveitar de código, outros vêem no open source e crowdsourcing, oportunidades de devolver à comunidade, bem como de melhorar as competências, aprendendo melhores práticas.
Quanto a poderem ou não usar (deverem ou não), terá de consultar a licença para cada caso.
No caso do Laravel, pode consultar em https://github.com/laravel/laravel#license
que ao dia de hoje é https://opensource.org/licenses/MIT
Existe muito software código fonte livre, como refere.
Se por um lado, uns interpretam como se aproveitar de código, outros vêem no open source e crowdsourcing, oportunidades de devolver à comunidade, bem como de melhorar as competências, aprendendo melhores práticas.
Quanto a poderem ou não usar (deverem ou não), terá de consultar a licença para cada caso.
No caso do Laravel, pode consultar em https://github.com/laravel/laravel#license
que ao dia de hoje é https://opensource.org/licenses/MIT
Vou seguir! Timing certo! 🙂