Programação Web – #2: Hello world!
Esta rubrica tem como objectivo abordar a framework PHP Laravel.
Após o bom feedback recebido no artigo #1 desta rubrica, ainda assim subsistiu a dúvida se faria ou não sentido começar pelo básico, de forma a instruir quem nunca programou, ou acelerar um pouco o ritmo, para não demorar alguns meses até chegar à framework e tirar partido das fantásticas possibilidades ao dispor. A solução passou por fazer um híbrido, onde o leitor terá tempo de praticar e questionar o Google na procura de guias, de forma a sincronizar o passo e acompanhar esta rubrica.
Falou-se também nas micro frameworks, que são mais reduzidas no que toca a componentes, pois o seu objectivo será fazer uma API (Application Programming Interface). Podemos pensar numa API como um conjunto de métodos e respostas, previamente definidos, para que duas camadas de software possam interagir. Assim, as micro frameworks ganham este nome, pois podem ser construídas por menos componentes, podendo então ser mais rápidas e suportar mais pedidos por segundo. Isto pode fazer toda a diferença em aplicações com bastante tráfego.
Assim como em qualquer aplicação (micro ou full size), se houver por exemplo muita interacção com a base de dados, quantos mais pedidos houver, mais depressa vamos necessitar de maior poder de processamento, ou eventualmente, mais servidores e um load balancer. Há outros métodos que permitem adiar tal procedimento: por exemplo, com um bom sistema de cache implementado também pode haver bons ganhos. Puxar N resultados da base de dados e tratá-los em memória, também será mais eficiente que puxá-los individualmente (N+1 Query Problem).
Na nossa rubrica, não vamos poder chegar a todo o lado. Vamos fazer um percurso que vos orientará, e mais que isso (que considero fundamental), implementar conhecimentos base que vos permitirão trilhar o vosso próprio caminho.
Assim, mantemos o rumo por uma “framework full-size”.
O servidor
O caso mais típico pela Web fora será a stack LAMP, acrónimo para Linux + Apache + MySQL + PHP. Existe uma nova tendência para o LEMP, que em vez de Apache, leva NginX (Engine X).
De um modo muito redutor, o Apache vai ser o nosso processo webserver, que irá servir respostas. Se pedirmos uma imagem jpeg, ele irá entregar a foto. Já se pedirmos um ficheiro PHP, ele irá entregar o resultado do processamento do código nesse ficheiro.
NOTA: Numa fase inicial, iremos usar a nossa máquina como servidor da nossa aplicação. Mais à frente, iremos alavancar ferramentas como o Vagrant e VirtualBox, que nos vão permitir desenvolver em qualquer OS, e a nossa aplicação estará a correr num ambiente Linux virtualizado, que terá assim um comportamento igual ou similar ao ambiente de produção – onde está a aplicação disponível para uso, bem como toda uma equipa de programação estará a testar o código fonte em ambiente igual.
Método de Ensino
Seria muito extenso para o leitor, e talvez até maçador, ver vários exemplos de código fonte aqui debitados. Vou tentar, por ajuda de screencast (vídeo), tornar os guias mais interactivos, mais rápidos, e disponibilizar os vários ficheiros se eventualmente quiserem testar. O que não falta na web são recursos deste tipo, com inúmeras lições atrás de lições. Assim vamos tentar inovar.
Quando chegarmos ao tema de OOP (Programação Orientada a Objectos), teremos então este processo alavancado da melhor forma e usaremos ferramentas para colaboração, como GIT e Composer.
Até lá, por muito que bastassem uns trechos de código para o leitor copiar-colar-experimentar, vamos tentando screencasts.
Pontos para hoje:
- Instalação do XAMPP, que nos vai permitir ter PHP e Apache. À altura da realização do guia, foi a versão XAMPP 5.6.15
- Instalação do IDE NetBeans PHP IDE
- Instalação de tema Sublime Monokai
- Hello world! - Ambiente pronto para iniciar aprendizagem!
Download XAMPP NOTA: no decorrer do vídeo, a instalação do XAMPP deu um pequeno bug, mas que se tornou importante explorar. Este será configurado por omissão, para as portas 80 e 443, e assim abordamos o método para descobrir que outras aplicações podem estar a fazer uso dessas portas.
Screencast
Se não conseguir ver o vídeo, clique aqui.
Até breve!
Este artigo tem mais de um ano
Bom dia. Apenas gostaria de comentar que seria interessante o tutorial ser baseado na infraestrutura LARAVEL como um todo, usando concretamente o HOMESTEAD em vez do XAMPP. De aplaudir um tutorial em LARAVEL, não se deixe incomodar pelo meu comentário construtivo.
Boas. O homestead está previsto, quando chegarmos ao Laravel. Veja o roadmap provisório no primeiro artigo.
E obrigado pelos comentários!
E eu a pensar que iam usar lamp… sempre dependentes do ruim. Sendo assim vou adaptar-me como de costume.
Existe algum problema em usar ainda o mysql e o apache? Ou será transparente para o php neste curso?
Bastará ter PHP e apache, até chegarmos ao Laravel, homestead.
Depois, poderá ter também a Homestead em Linux, que me parece que é o seu ambiente.
Não tenho a certeza, será conforme a sua distribuição. Apenas corro em Windows e OSX.
O xampp é praticamente igual ao lamp, não vejo qual é o problema
Boas.
Na verdade, daqui a meia dúzia de artigos, quando passarmos OOP, e introduzir Laravel, vamos chegar à Homestead. Assim, todo o projeto é gerido e corrido nesta VM que é LAMP (Ubuntu Server).
Posso sugerir algo? Usem o AMPPS, uso até hoje e aparenta ser bem melhor que o XAMP.
Boas, Como referido acima, o XAMPP será apenas para o início ser rápido a ir para PHP.
Chegaremos à Homestead, que anula então a necessidade do XAMPP.
Obrigado. Continuem assim. Muito útil. Vou acompanhar.
Bom dia e ja agora digam me uma coisa um programa para poder acompanhar estas rubricas mas num tablet android???
Olá Botas,
A título experimental, e não testado (por mim), investigue
Android WebServer: KSWEB: server + PHP + MySQL
Editor: touchqode
Se localhost não funcionar, digite 127.0.0.1
Quando chegarmos a Laravel, estou em crer que não haverá solução para continuar.
Um questão, o IDE netbeans será essencial (mesmo que mais à frente)? Já uso para edição de ficheiros o sublime (muitas vezes até com vim), e faço tudo localmente. Não queria pesar (ainda) mais o meu posto de trabalho. Obg
Boas. Pode usar o sublime sem problema.
O NetBeans é um IDE, e gratuito.
O Sublime, pode ser um IDE, se aplicados plugins (SublimeCodeIntel).
Muito útil vou acompanhar com muito interesse
Eu sou novo nisto, por isso não tenho qualquer opinião por onde ir. Agora começar pelo inicio, para mim, seria uma grande principio 🙂
Olá Ricardo,
Vamos começar pelo início, sim. Mas tenha em mente que será necessária prática e explorar por parte do leitor, extra aos vídeos. É virtualmente impossível fazer um tutorial de tudo, sobre tudo.
Sim eu sei. Na verdade eu estive no ensino profissional durante 3 anos em informática, onde tive C, Qbasic, entre outros. Mas no entanto nunca mais utilizei, agora voltar a ter conhecimentos, para isso terei que acompanhar todos os passos e provavelmente ver ainda mais algumas coisas.
Acompanharei atentamete
Para o desenvolvimento de saas qual é a melhor linguagem?
Entendi SaaS – Software as a Service. Creio não haver uma resposta exata ao que pergunta!
Quanto ao PHP e Laravel, são perfeitamente capazes! Os resultados variam. Depende, claro, do código desenvolvido e respetiva estruturação.
Muito importante será a ter em conta a escabilidade, e a arquitetura da App e do código, para manutenção (alterações e bug fixes) ao código, e upgrades de features.
Aconselho-o a pesquisar sobre alguns padrões de desenvolvimento, como Multi Tenant Architecture, Domain Drive Design e SOLID principles.
Sim é SaaS, já aprendi html5, css, javascript e java (fiz uns programas “caseiros”, mas infelizmente a oracle não está a apostar nas frameworks para SaaS, pelo menos é o que tenho lido), então estava decidido a optar por rails ou django (estando mais decidido a apostar no django/python), gostava de saber é tendo em conta o bombardeamento de informação quais as mais seguras para os clientes (menos vulneráveis a ataques) e que precisem de menos recursos (servidor), obrigado pelas sugestões, e também pelo artigo, está muito interessante vou seguir já que também pode ser uma solução para o que eu quero.
Boa Noite,
Deixo só uma questão e caso seja “ridícula ” peço desde já desculpa.
Porque não usar o USBWebServer , é portable e serve na mesma de ponte entre o MySQL e PHP.
Cumps.
Não tem nada de ridícula.
O xampp pareceu-me o mais adequado, pois permite facilmente adicionar extensões e drivers, bem como garantir a compatibilidade. Por ex: SQL Server (Microsoft), Virtual Hosts, entre outros.
Do que que consultei agora, http://www.usbwebserver.net/en/download.php, têem uma versão de PHP e MySQL bastante antigas.
Para quem optar por seguir o ambiente de testes em Windows (e não adoptar a Homestead), o Xampp será uma solução mais robusta.
Boa noite!
parabéns pela iniciativa.
A espera das próximas aulas.
Abraço
boas, em vez do screencast, poderia ser tudo por escrito.
Boas. Parece-me que se o que está neste screencast estivesse em escrito e fotos, seria muito extenso.
Se o que o leva a pensar assim, é (hipoteticamente), ter de escrever tudo à mão…
Existirá a explicação em vídeo, e os ficheiros fonte para descarregar, e experimentar etc
Mais à frente, iremos alavancar ferramentas como GIT e Composer.
Vejamos algumas aulas assim, se o feedback geral não for satisfatório, tentaremos tudo por escrito.
Obrigado a todos, pelo feedback positivo até então!
Obrigado pelo rúbrica, já faltava uma assim. Sou programador (não de PHP) e só programei em PHP nos tempos livres e por curiosidade, mas acabei por desistir sempre porque nunca usei frameworks, e tudo era moroso e extenso. É desta que volto a pegar nesta tecnologia. Por favor não desistas, ficamos à espera de mais “episódios” 🙂 Obrigado
Tenho curiosidade em aprender coisas novas… obrigado pela iniciativa mas… para quando uma nova publicação?
O intervalo entre posts parece-me demasiado extenso 😉
É semanal, Miguel. Na próxima 4ª feira há mais 🙂
Hein!!!
Uma semana tem 7 dias 🙁
Obrigado pelo feeback 🙂
Bom dia,
Aqui neste turorial foi escolhido o XAMPP Apache como servidor local, mas não é explicado porque é que foi este o escolhido e também não foram apresentadas possíveis alternativas que o utilizador possa usar caso assim o deseje.
Se possível gostaria de perceber o porque desta escolha. Obriagado e continuação de bom trabalho.
Viva. O âmbito do tutorial não é afinar o ambiente de desenvolvimento local, nem está previsto fazê-lo. Recorri a uma solução mais abrangente em windows (que não é o meu ambiente típico, sequer).
Tem alternativas com o próprio host, como Laravel Valet e/ou Laragon, e virtualizado em VM como o Homestead, e há configurações também com Docker.
Já está difícil que chegue conseguir tempo para falar de OOP, PHP, e Laravel, pelo que se procura alternativas para configurações de ambiente local, pode seguir as dicas deixadas acima…
Cumpts e obrigado pelo interesse!