Cσяvσ⋆ 1,804 Posted June 17, 2017 Ayo kids, today vou-vos ensinar a trabalhar com Laravel, uma Framework de PHP open-source, que vos irá ajudar a criar websites da maneira mais fácil e segura possível, utilizando métodos Anti-SQLi da Framework e CSRF (Cross Sire Request Forging). Why Laravel? Bem, para quem programa em Raw PHP, posso-vos dizer que o que mais vai fazer-vos mudar para isto (sem falar das packages que isto tem) é o ficheiro Routes, neste ficheiro podem mapear tudo o que se passa no vosso websites, entre diretórios (e o método deles, seja POST/GET/PATCH/PUT/DELETE) e a função que é executada sempre que lá entram. Sim... mas apenas isso? Não, Laravel ainda vem equipado com Blade, uma "framework" de HTML que vos permite executar código PHP da maneira mais simples e compacta possível, como verificar se o utilizador está logado, com um simples "@if(Auth::check())" que utiliza a classe "Auth" e dá return num TRUE ou FALSE ao executar a função check(), vendo se tens a sessão iniciada nesse browser. Podem também utilizar layouts para o design e fazer um "@yield('NomeDoYield')" no layout para o chamarem noutro ficheiro e inserir dados lá (com um @extends('layouts.NomeDoLayout') e um @section('NomeDoYield') "blah blah" @endsection), sem precisar de repetir o mesmo layout por todas as views (páginas visuais, ou output pages) Coisas necessárias: - Composer (https://getcomposer.org/Composer-Setup.exe) - GIT Bash (https://git-scm.com/download/win) Instalação: 1- Abrir o GIT Bash 2- correr o comando composer global require "laravel/installer" 3- correr o comando laravel new NomeDoProjecto 4- mudar o directório para o do projecto com cd NomeDoProjecto (podem escrever a primeira letra e clicar no TAB que ele dá auto-complete) 5- executar o comando php artisan serve e aceder a http://localhost:8000 Criação da Autenticação: 1- dar CTRL + C na consola para dar exit ao que está a decorrer 2- executar o comando php artisan make:auth 3- aceder novamente a http://localhost:8000 e verificar se os botões "login" e "register" estão lá 3.1- estes botões levam-vos a (não se registem, ainda não criamos a base de dados) Ficheiros do projecto: Ficheiro de configuração: - O ficheiro .env é o ficheiro de configuração, alterem-o de vez com a vossa config da base de dados (não se esqueçam de criar o Schema/DB com o MySQL Workbench ou outra IDE de MySQL) Routes: - a pasta routes é utilizada pelo ficheiro web.php, este contem todo o mapeamento entre as views (output para o utilizador) e as funções (onde é corrido código PHP em segurança, dentro de um controlador) ou com o comando php artisan route:list na consola - Este ficheiro contém informação básica do mapeamento, como o método de execução (GET/POST, ou os utilizados em Rest API, os PUT/PATCH/DELETE), o directório onde vai ser chamada a route (o que quiserem) e a função que é executada ao aceder ao directório (NomeDoControlador@NomeDaFunção), com um nome que podem dar ao mapeamento, para mais tarde o chamarem se necessário. Resources: - Nesta categoria temos os layouts e views, que é o que podem chamar de páginas em HTML, ou páginas de output (visuais), que contêm tudo o que o utilizador vai conseguir ver Exemplo de layout (páginas que têm o design base da página), chamada app.blade.php: (o yield('NomeDoYield') é o que vai-vos poder fazer inserir HTML no sitio daquele Yield, num ficheiro completamente diferente) Exemplo de view (página que chama um layout, ou não, é utilizada para coisas simples), chamada login.blade.php: (como podem ver esta contém um @extends('layouts.app'), que chama o layout "app" que está dentro da pasta "layouts" e um @section('content') que serve para a framework saber que o que vem entre o inicio da section e o final é para ser inserido onde fizeram o Yield no layout) Exemplo de código PHP dentro do ficheiro HTML: (o ficheiro .blade.php deixa-nos correr PHP da forma mais simples possível, conseguindo aceder às classes que torna esta framework de tão grande valor. Aqui podemos ver uma lógica para mostrar a Home a utilizadores com Login já efectudado ou os botões Login e Register aos que estão Deslogados (guests), verificando se o ficheiro Routes que vimos anteriormente tem algum mapeamento com o name "login", se este tiver verificamos pela classe de autenticação Auth se o utilizador tem sessão iniciada, caso não tiver este mostra-lhe os botões de Guest) Controllers: (estes são os ficheiros onde são corridas as funções do projecto, podem criar os controladores que quiserem com o comando php artisan make:controller NomeDoController pela consola, para organizarem melhor o trabalho) Exemplo de controlador: (verificamos que neste controller temos a função index(), que quando é chamada na Route por "HomeController@index" retorna uma view chamada "home", este controlador é constituido pelo namespace que mais tarde direi o que é e para que serve, o import das packages utilizadas para o controlador e a classe em sí, que dá extend no Controller principal da framework) Base de Dados: (esta categoria é composta por 2 coisas importantes, as migrations que são constituidas por blueprints das tabelas, as seeds que armazenam tudo o que querem que já venha de dados na base de dados quando a importarem) Porquê utilizar Migrations? - Podem simplesmente criar uma máquina nova, correr o comando "php artisan migrate" e o "php artisan db:seed --class=DatabaseSeeder" que têm uma base de dados limpa e pronta a ser trabalhada, sem ter que exportar e importar seja o que for Exemplo de migration (tabela users): (esta blueprint é constituida sempre por duas funções, a função de criar e a de apagar a tabela, na de criar podemos ver o básico de uma tabela, começando com um ID em autoincrement, 3 tabelas de texto em que o EMAIL é único e um remembertoken + timestamp, que vem da framework, o token é gravado quando clicam no "Remember Me" ao fazer login e os timestamps vêm sempre com um "created_at" e "updated_at", que mais tarde digo-vos o porquê de ser absolutamente lindo) Vamos lá fazer a migration das tabelas para a base de dados? 1- Incluir isto em App>Providers>AppServiceProvider.php 2- correr o comando "php artisan migrate" 3- done, já se podem registar pelo website Exemplo de algo do dia a dia: 1- correr o comando php artisan make:controller UsersController 2- modificar o controlador meter o use App\User para aceder ao modelo da tabela users criar a função currentUsers() para retornar os utilizadores registados executar um User::all() para ir buscar todos os registos da tabela users, e guardar-los na variável $users retornar à view teste a variável $users com o nome de users, para poder ser acedida dentro da view 3- criar um ficheiro teste.blade.php em resources>views e editar-lo 4- mapear a função com o URL que querem 5- aceder a http://localhost:8000/teste e verificar se funcionou Páginas importantes: - Documentos (https://laravel.com/docs/5.4/) - Queries (https://laravel.com/docs/5.4/queries) - Laracasts (https://laracasts.com/series/laravel-5-from-scratch) - Bom canal de youtube (https://www.youtube.com/user/codexecutable/playlists) Tens alguma dúvida? Acedam ao Discord da cyber (https://discord.gg/knEuRSt) e enviem-me um PM, terei todo o gosto em vos ajudar, seja em algum problema ou até mesmo em lógica 5 Snooke, .тιαgσ, thecrazy and 2 others reacted to this Share this post Link to post Share on other sites
thecrazy 1,193 Posted June 17, 2017 Too much shit to read, "kid". Obrigado pelo tutorial! 1 Cσяvσ⋆ reacted to this Share this post Link to post Share on other sites
Cσяvσ⋆ 1,804 Posted June 17, 2017 23 minutos atrás, U. Itachi disse: Too much shit to read, "kid". Obrigado pelo tutorial! Tentei ser o mais breve possível desde a instalação até à criação de uma página que possam utilizar num projecto vosso, nunca tive jeito para resumir seja o que fosse que tivesse demasiada informação na cabeça. Arigato. 2 Loading and thecrazy reacted to this Share this post Link to post Share on other sites
Mega Panda 42 Posted June 17, 2017 Bom tópico good 1 Cσяvσ⋆ reacted to this Share this post Link to post Share on other sites
.тιαgσ 624 Posted June 17, 2017 You actually done it. Bom tutorial espero que faças mais Queria acrescentar uma coisa, nunca utilizei o Git Bash para o artisan, como uso o PHP Storm dá para adicionar o artisan. Para isso, basta adicionar a tool ao projecto, podem ver como aqui em baixo no link que vou deixar. Mas irei testar o Git Bash não conhecia ainda. https://confluence.jetbrains.com/display/PhpStorm/Laravel+Development+using+PhpStorm#LaravelDevelopmentusingPhpStorm-3.GeneratethePHPDocHelperFileusingArtisan 1 Cσяvσ⋆ reacted to this Share this post Link to post Share on other sites