Programação Web – #1: Introdução

62 Comentários

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.

clean-coding-best-practices


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.

prog-languages2

 

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
  • Email
  • 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?

 

Por João Patrício para Pplware.com

Comentários

62

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Finalmente
    Finalmente

    Finalmente alguém com conhecimentos A SÉRIO!!!!

  2. Avatar de João Pereira
    João Pereira

    Programo usando o laravel como framework em vários projectos, recomendo vivamente, face ao codeigniter foi mesmo uma lufada de ar fresco.

    1. Avatar de Morbidos
      Morbidos

      É de mim ou o codeigniter da 10-0 ao Laravel a nível de dificuldade de instalação/requisitos, principalmente em shared hosting?

      1. Avatar de Nuno Rodrigues
        Nuno Rodrigues

        shared hosting ? A serio?

      2. Avatar de João Patrício
        João Patrício

        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.

        1. Avatar de Morbidos
          Morbidos

          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.

  3. Avatar de André Narciso
    André Narciso

    Muito bom, venha 🙂
    Uma proposta, explicar como passar o laravel de localhost to live host.

    1. Avatar de Jose
      Jose

      Podes sempre comprar uma vps e fazer como se fosse um localhost 🙂 registas um dominio e toca a andar

      1. Avatar de João Patrício
        João Patrício

        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

  4. Avatar de Filipe Medeiros
    Filipe Medeiros

    Há muitos projectos que o pplware nem terminou por exemplo este aqui
    https://pplware.sitedev.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!? 😛

    1. Avatar de Vítor M.

      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.

  5. Avatar de João Santo
    João Santo

    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.

    1. Avatar de joaquim benedito
      joaquim benedito

      ola João santos eu sou principiante em programação web quero dar os meus primeiro passo podes ajudarme

  6. Avatar de slooney
    slooney

    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.

  7. Avatar de Joao Ferreira
    Joao Ferreira

    Boraaaaa….

  8. Avatar de jorge
    jorge

    Excelente iniciativa !!
    Podemos contar com uma periodicidade, no mínimo, semanal?

  9. Avatar de Ricardo
    Ricardo

    A aguardar os seguintes 😉

  10. Avatar de Fausto
    Fausto

    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.

  11. Avatar de jedi
    jedi

    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. 😉

    1. Avatar de João Patrício
      João Patrício

      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!

      1. Avatar de jedi
        jedi

        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. 😉

  12. Avatar de David
    David

    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!

  13. Avatar de vcortez
    vcortez

    Caro João,
    De pronto ocorrem-me apenas as seguintes palavras:
    Excelente iniciativa. Muito obrigado!

  14. Avatar de João Patrício
    João Patrício

    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!

    1. Avatar de Lourenço Tourais
      Lourenço Tourais

      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?

      1. Avatar de Joao Patrício
        Joao Patrício

        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.

        1. Avatar de Lourenço Tourais
          Lourenço Tourais

          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?

  15. Avatar de Carlos R
    Carlos R

    Promete!
    Os meus parabéns.

  16. Avatar de Chuck
    Chuck

    A aguardar 🙂

  17. Avatar de Gonçalo
    Gonçalo

    Assino de cruz 🙂

  18. Avatar de Gonçalo
    Gonçalo

    actualmente estou a usar PulseCMS para coisas mais simples, mas prevejo o uso do Laravel a curto prazo

  19. Avatar de AS
    AS

    Excelente… aguardo pelos próximos episódios.

  20. Avatar de Jet15
    Jet15

    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.

  21. Avatar de Rui Oliveira
    Rui Oliveira

    Bom trabalho, vou ficar à espera! Obrigado

  22. Avatar de Tiago
    Tiago

    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. Avatar de João Patrício
        João Patrício

        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!

        1. Avatar de Jorge Franco
          Jorge Franco

          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).

  23. Avatar de Nuno Freitas
    Nuno Freitas

    Muito muito bom. Laravel é incrivel. Vou acompanhar.

  24. Avatar de Rui Dias
    Rui Dias

    Obrigado pelo “curso”! Espero que o leves a bom porto.

  25. Avatar de Bota gel
    Bota gel

    Ótimo. Vai dar para aprender mais pormenores de certeza.

  26. Avatar de PH
    PH

    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.

  27. Avatar de Miguel
    Miguel

    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 🙂

  28. Avatar de Roberto
    Roberto

    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.

    1. Avatar de __root
      __root

      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.

    2. Avatar de João Patrício
      João Patrício

      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!!

  29. Avatar de t
    t

    +1
    Parabéns pela iniciaitiva! @João Patrício
    A roadmap parece promissora. Espero que este projecto avance. 🙂

  30. Avatar de Bruno
    Bruno

    Parabéns pela iniciativa, acho que iremos apreender muito

  31. Avatar de Jorge Désirat
    Jorge Désirat

    Fantástico! Vou estar atento a esta rubrica para ver se volto a ganhar o bichinho da programação

  32. Avatar de Joel
    Joel

    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!!

    1. Avatar de Jorge
      Jorge

      Eu concordo, já senti a necessidade do mesmo.

  33. Avatar de Nuno Rodrigues
    Nuno Rodrigues

    Laravel tem comunidade Portuguesa em:
    https://groups.google.com/forum/#!forum/laravel-portugal

    e Slack laravel-portugal.slack.com

    Obrigado.

  34. Avatar de João Patrício
    João Patrício

    Obrigado a todos pelos comentários, e votos de confiança!
    Espero conseguir fazer chegar esta rubrica, àquilo que prevejo na minha mente 🙂

    1. Avatar de Nuno Rodrigues
      Nuno Rodrigues

      Caso necessites de ajuda avisa.

  35. Avatar de Pedro Martins
    Pedro Martins

    Já agora para quem necessita somente de um framework de simple e muito poderoso pode sempre dar uma olhade-la ao

    slimPHP

    Pedro Martins

  36. Avatar de JotaS
    JotaS

    Bota para a frente! Manda vir disso que a gente agradece 🙂

  37. Avatar de André Freitas
    André Freitas

    Muito bom mesmo, desde já, parabéns pela iniciativa acredito que a comunidade irá ficar grata. 😉

  38. Avatar de Manuel Gamelas
    Manuel Gamelas

    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.

  39. Avatar de Redin
    Redin

    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.

    1. Avatar de João Patrício
      João Patrício

      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

  40. Avatar de João Patrício
    João Patrício

    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

  41. Avatar de Francisco
    Francisco

    Vou seguir! Timing certo! 🙂