MVC framework pentru PHP

Noțiune de framework

Majoritatea site-urilor, pe lângă pagini, conțin o serie de module software care îndeplinesc aceleași sarcini tipice: lucrul cu baza de date, afișarea paginilor bazate pe șabloane, controlul accesului, protecția împotriva atacurilor și altele. Și din moment ce astfel de sarcini sunt aceleași în toate site-urile, puteți să nu scrieți aceste module de fiecare dată, dar să utilizați un produs software care le are încorporate.

Astfel de produse software există! Acestea sunt framework-urile. Deja create, framework-urile, oferă dezvoltatorului tot de ce are nevoie pentru:

  • lucrul cu baza de date;
  • generarea de pagini bazate pe șabloane;
  • controlul accesului;
  • protecție împotriva atacurilor din rețea;
  • asistență AJAX, etc.

Dezvoltatorului îi rămâne să instaleze doar framework-ul, să-l configureze (cel puțin să precizeze informațiile necesare pentru conectarea la baza de date), să scrie și să încorporeze module software în el care să realizeze sarcini specifice site-ului ce este dezvoltat: procesarea datelor specifice și generarea de pagini specifice bazate pe acesta. Este clar că, din moment ce dezvoltatorii de framework-uri au făcut o mare parte din munca programatorul Web, site-ul poate fi creat foarte rapid pe baza acestuia.

Framework-urile sunt create cu scopul de a facilita dezvoltarea de software, oferind programatorilor posibilitatea de a acorda mai mult timp identificării necesităților software-ului și nu în scopul de a dezlega infinite probleme necesare obținerii unui sistem funcțional.

În prezent există o mulțime de framework-uri - zeci și poate sute.

Cele mai populare 10 framework-uri cu cod deschis sunt:

  1. Laravel
  2. CodeIgniter
  3. Symfony
  4. CakePHP
  5. Yii
  6. Zend Framework
  7. Phalcon
  8. FuelPHP
  9. PHPixie
  10. Slim

Cel mai popular produs de acest fel este Laravel.

Laravel este un framework MVC PHP creat de Taylor Otwell în 2011. Laravel a devenit cel mai popular framework PHP gratuit, open-source din lume. Deoarece poate trata aplicații web complexe în siguranță, într-un ritm considerabil mai rapid decât alte framework-uri. Laravel simplifică procesul de dezvoltare prin ușurarea sarcinilor obișnuite, cum ar fi rutarea, sesiunile, memorarea în cache și autentificarea.

Framework-ul Laravel este numărul unu în programarea web!



Avantajele framework-ului Laravel:

  • Laravel este scris în PHP, cel mai popular limbaj de programare a site-urilor dinamice.
  • Laravel nu are cerințe specifice de sistem și operează/funcționează pe capacitățile aproape la toți furnizorii de găzduire.
  • Oferă aproape toată funcționalitatea de bază a site-urilor, inclusiv un sistem puternic de control al accesului, instrumente pentru trimiterea de e-mail și un mecanism excepțional de migrare.
  • Toate instrumentele incluse sunt deja configurate în cel mai bun mod pentru majoritatea cazurilor.
  • Aproape tot ce aveți nevoie poate fi implementat cu un cod de program foarte scurt. Adică există o reducere suplimentară a intensității forței de muncă.
  • Există multe biblioteci suplimentare scrise de dezvoltatori terți care extind funcționalitatea framework-ului Laravel.
  • Laravel include instrumente de prototipare - crearea de semifabricate pentru module software de diferite tipuri, în care dezvoltatorul site-ului va trebui doar să adauge propriul său cod.

Principiul Model-View-Controller

Un framework reprezintă o unealtă care are la bază o serie de Clase și script-uri PHP, concepute special pentru a facilita programarea unei aplicații sau a unui website, utilizând conceptul MVC (model-view-controller).

Ce înseamnă MVC:

  1. Litera M provine de la cuvântul Model. Un model este o clasa ce are ca parametrii câmpurile dintr-o tabela, ajutând astfel programatorul să lucreze mult mai ușor cu bazele de date.
  2. Litera V provine de la cuvântul View. Un view este acel fișier php pe care îl vede utilizatorul unui site sau al unei aplicații. Un framework poate transpune codul PHP în cod HTML. Într-un view se pot pune formulare, texte, scripturi javascript și tot ceea ce este nevoie pentru a facilita experiența vizuală a utilizatorului final.
  3. Litera C provine de la cuvântul Controller. Un controller, așa cum se înțelege și din denumirea lui, controlează acțiunile unei aplicații sau ale unui site. Într-un controller se vor defini acțiunile, drepturile de acces și alte funcții necesare pentru o bună funcționare a aplicației. Spre exemplu, pentru a defini un view din aplicație, este necesară definirea unei funcții în care putem face interogări, adăugări în baza de date în funcție de formularul din view.


Diagrama arhitecturii MVC

Cum funcționează

Schema de funcționare a unei aplicații modelate după arhitectura MVC decurge, în linii mari, în felul următor:

  1. User-ul interacționează cu interfața (exemplu: apasă un buton la tastatură).
  2. Controller-ul primește acțiunea apăsării butonului și o convertește într-o acțiune pe înțelesul model-ului.
  3. Controller-ul notifică model-ul de acțiunea utilizatorului, urmând de obicei o schimbare a stării model-ului (exemplu: model-ul reîmprospătează starea câmpului de adresă).
  4. Un view interoghează model-ul pentru a genera o interfață corespunzătoare (exemplu: view-ul afișează noua adresă alături de cea veche alături de un buton de confirmare).
  5. Interfața așteaptă acțiuni suplimentare din partea utilizatorului, ciclul reluând-se.

Aplicații web care pot fi dezvoltate folosind framework-ul Laravel.

Instalare și configurare web server local

Pentru instalare și configurare web server local vom folosi pachetul XAMPP, o aplicație care include serverul web Apache, interpretorul PHP, sistemul de gestiune a bazelor de date MySQL și aplicația de administrare a bazelor de date phpMyAdmin. Pachetul XAMPP poate fi descărcat de pe site-ul dezvoltatorului https://www.apachefriends.org pentru platformele Windows, Linux și OS X. Așa că vom instala framework-ul Laravel în XAMPP.

Mediul de dezvoltare a proiectelor PHP

Întrucât sintaxa limbajului PHP este relativ simplă, iar structura codului sursă nu este una impusă, codul PHP poate fi scris cu orice editor text, cum ar fi Notepad. În realitate, acest lucru este posibil doar pentru scripturile de câteva linii de cod; pentru fișiere mari și complexe, un editor PHP specializat este aproape indispensabil. Exista mai multe editoare de cod-sursă ce pot fi folosite pentru PHP, de la IDE-uri complexe până la editoare simple. Toate oferă highlight pentru cuvintele cheie, completare automată a instrucțiunilor, facilități avansate de căutare și altele. Puteți folosi pe oricare dintre ele, în funcție de nevoile voastre.

  1. Notepad ++ - un editor de coduri sursă, care indeplinește foarte bine și funcțiile Notepad-ului din windows. Limbajele de programare suportate sunt foarte variate. Programul nu necesita resurse hardware mai mari decat Notepad-ul din Windows. Notepad++ - un Notepad mult mai complex. Proiectul include foarte multe plug-in-uri ajutatoare pentru anumite editari complexe. Softul este gratuit (licenta GPL).
  2. Sublime Text - Sublime Text 3 este un editor de text care e la modă de ceva timp, datorită faptului că reușește să îmbine o mulțime de aspecte pe care ți le-ai dori de la un editor într-un program mic, dar foarte puternic. Sublime Text 3 folosește un sistem de API Python pentru plugin-uri și teme, care sunt incredibil de folositoare.
  3. PhpStorm este un IDE comercial, multi-platformă, pentru PHP, construit de compania JetBrains din Republica Cehă. PhpStorm oferă un editor pentru PHP, HTML și JavaScript cu analize de cod din zbor, prevenirea erorilor și refactorii automate pentru codul PHP și JavaScript.
  4. Visual Studio Code este un editor de cod sursă dezvoltat de Microsoft pentru Windows, Linux și macOS. Include suport pentru depanare, control Git încorporat și GitHub, evidențierea sintaxei, completarea inteligentă a codului. Este foarte personalizabil, permițând utilizatorilor să schimbe tema, comenzile rapide de la tastatură, preferințele și să instaleze extensii care adaugă funcționalitate. Codul sursă este liber și open source și este eliberat sub licența MIT permisivă. În Studiul pentru dezvoltatori Stack Overflow 2019, Visual Studio Code a fost clasat cel mai popular instrument de mediu pentru dezvoltatori, 50,7% din 87.317 respondenți au susținut că îl folosesc.

Composer pentru extensiile MVC

În PHP majoritatea codului îl scriem noi, însă utilizarea librăriilor deja existente este un avantaj. Putem să folosim un număr consistent din ele - și să scriem cod mult mai stabil și securizat.

Dar, există o problemă. Suntem nevoiți să instalăm de fiecare dată librariile manual, să le includem manual în fișiere - un adevarat chin.

Asemănător package manager-elor pentru sistemele de operare, gen cel pentru Ubuntu, are și PHP package manager-ul lui. Aceasta înseamnă că îți instalează el librariile care le dorești, configurează un autoload pentru ele, adică nu mai trebuie să le incluzi manual, se includ doar la momentul când ai nevoie de ele.

Package manager-ul din PHP este Composer cu lista de pachete disponibilă la adresa packagist.org. Toate librăriile care le vei folosi sunt deja acolo.

Instalul composer-ului este disponibil la adresa getcomposer.org/doc/00-intro.md.


Cum lucrează Composer-ul

Instalerea MVC framework Laravel în XAMPP

Pentru a instala Laravel, se folosește composer în CMD (Command Line Interface). Pentru a deschide Command Line Interface în windows, apăsați butonul Start și scrieți "cmd". Prin urmare, înainte de a utiliza Laravel, asigurați-vă că aveți Composer-ul instalat pe mașina dvs.

1. Prin instalatorul Laravel

Mai întâi, descărcați programul de instalare Laravel folosind Composer:

composer global require laravel/installer

Odată instalată, comanda laravel new va crea o nouă instalare Laravel în directorul specificat. De exemplu, laravel new blog va crea un director numit blog care conține o instalație Laravel proaspătă, cu toate dependențele Laravel deja instalate:

2. Prin comanda create-project

În mod alternativ Laravel-ul poate fi instalat utilizând Composer-ul prin comanda create-project

I. Instalarea versiunii următoare, care este în stadiu de dezvoltare a framework-ului Laravel:

composer create-project laravel/laravel project_name dev-develop

- în directorul "C:/xampp/htdocs/", composer-ul va crea un director numit "project_name" cu framework-ul Laravel iar instrucțiunea "dev-develop" specifică să fie instalată versiunea următoare, care este în stadiu de dezvoltare.

II. Instalarea versiunii curente stabilă a framework-ului Laravel:

composer create-project –-prefer-dist laravel/laravel project_name

- în directorul "C:/xampp/htdocs/", composer-ul va crea un director numit "project_name" cu framework-ul Laravel iar instrucțiunea "–-prefer-dist" specifică să fie instalată versiunea curentă stabilă.

sau folosește doar comanda "create-project" cu nimic altceva:

composer create-project laravel/laravel project_name

Pentru a testa cu XAMPP integritatea instalării, porniți XAMPP-ul, apoi în browser accesați: localhost/project_name/public

Va afișa o pagină ca în această imagine:



Alternativ, poți folosi serverul web incorporat în PHP. În interfața Command Line navigați către directorul cu proiectul Laravel, apoi inițiați următoarea instrucțiune în linia de commandă:

php artisan serve

După executarea comenzii de mai sus, veți vedea afișat ca în următoarea imagine:

La apăsarea combinației de taste ctrl + c va opri serverul și va returna controlul în linia de comandă.

În mod implicit, serverul HTTP va asculta portul 8000. Cu toate acestea, dacă acel port este deja în uz sau doriți să serviți mai multe aplicații în acest fel, puteți să specificați ce port să utilizați, adăugând argumentul --port:

php artisan serve --port=8080

Structura proiectelor Laravel

Mai jos aveți o imagine cu structura implicită a directoarelor aplicației Laravel 8.22:


Structura implicită a aplicației Laravel este destinată să ofere un punct de plecare excelent atât pentru aplicațiile mari, cât și pentru cele mici. Dar sunteți liber să vă organizați aplicația oricum doriți. Laravel nu impune aproape nici o restricție asupra locului în care se află o anumită clasă.

Directorul rădăcină al proiectului

Directorul App

Directorul app conține codul de bază al aplicației dvs. Vom explora în curând acest director mai detaliat; cu toate acestea, aproape toate clasele din aplicația dvs. vor fi în acest director.

Directorul Bootstrap

Directorul bootstrap conține fișierul app.php care bootstrapează framework-ul. Acest director găzduiește, de asemenea, un director cache care conține fișiere generate de framework pentru optimizarea performanței, cum ar fi fișierele cache de rută și servicii. De obicei, nu trebuie să modificați niciun fișier din acest director.

Directorul Config

Directorul config, după cum sugerează și numele, conține toate fișierele de configurare ale aplicației. Este o idee minunată să citiți toate aceste fișiere și să vă familiarizați cu toate opțiunile disponibile.

Directorul Database

Directorul database conține migrațiile bazelor de date, fabrici de modele și seeds-uri.

Directorul Public

Directorul public conține fișierul index.php, care este punctul de intrare pentru toate cererile care intră în aplicația dvs. și configurează încărcarea automată. Acest director găzduiește, de asemenea, activele dvs., cum ar fi imagini, JavaScript și CSS.

Directorul Resource

Directorul resource conține vizualizările dvs., precum și activele brute, necompilate, cum ar fi CSS sau JavaScript. Acest director găzduiește, de asemenea, toate fișierele dvs. de limbă.

Directorul Routes

Directorul routes conține toate definițiile rutei pentru aplicația dvs. În mod implicit, mai multe fișiere de rută sunt incluse cu Laravel: web.php, api.php, console.php și channels.php.

Fișierul web.php conține rute pe care RouteServiceProvider le plasează în grupul middleware web, care oferă starea sesiunii, protecția CSRF și criptarea cookie-urilor. Dacă aplicația dvs. nu oferă un API RESTful, atunci este probabil ca toate rutele dvs. să fie definite cel mai probabil în fișierul web.php.

Fișierul api.php conține rute pe care RouteServiceProvider le plasează în grupul middleware api. Aceste rute sunt destinate a fi stateless, astfel încât solicitările care intră în aplicație prin aceste rute sunt destinate a fi autentificate prin jetoane(token-uri) și nu vor avea acces la starea sesiunii.

Fișierul console.php este locul unde puteți defini toate comenzile de consolă bazate pe închidere. Fiecare închidere este legată de o instanță de comandă care permite o abordare simplă a interacțiunii cu metodele IO ale fiecărei comenzi. Chiar dacă acest fișier nu definește rutele HTTP, acesta definește punctele de intrare (routes) bazate pe consolă în aplicația dvs.

Fișierul channels.php este locul unde puteți înregistra toate canalele de difuzare a evenimentelor acceptate de aplicația dvs.

Directorul Storage

Directorul storage conține jurnalele dvs., șabloanele Blade compilate, sesiunile bazate pe fișiere, cache-urile de fișiere și alte fișiere generate de framework. Acest director este separat în directoarele app, framework și logs. Directorul app poate fi utilizat pentru a stoca orice fișiere generate de aplicația dvs. Directorul framework este utilizat pentru a stoca fișierele și cache-urile generate de framework. În cele din urmă, directorul logs conține fișierele jurnal ale aplicației dvs.

Directorul storage/app/public poate fi utilizat pentru a stoca fișiere generate de utilizatori, cum ar fi avatarurile de profil, care ar trebui să fie accesibile publicului. Ar trebui să creați o legătură simbolică la public/storage care să indice acest director. Puteți crea linkul utilizând comanda php artisan storage:link .

Directorul Tests

Directorul tests conține testele dvs. automate. Exemple de teste unitare PHPUnit și teste de caracteristici. Fiecare clasă de test trebuie să fie completată cu cuvântul Test. Puteți rula testele folosind comenzile phpunit sau php vendor/bin/phpunit. Sau, dacă doriți o reprezentare mai detaliată și mai frumoasă a rezultatelor testului, puteți rula testele folosind comanda php artisan test .

Directorul Vendor

Directorul vendor conține dependențele dvs. Composer.

Directorul app

Majoritatea aplicației dvs. este găzduită în directorul app. În mod implicit, acest director are calea App și este încărcat automat de Composer.

Directorul app conține o varietate de directoare suplimentare, cum ar fi Console, Http și Providers. Gândiți-vă la directoarele Console și Http ca oferind un API în nucleul aplicației dvs. Protocolul HTTP și CLI sunt ambele mecanisme pentru a interacționa cu aplicația dvs., dar nu conțin de fapt logica aplicației. Cu alte cuvinte, acestea sunt două modalități de a emite comenzi aplicației dvs. Directorul Console conține toate comenzile dvs. Artisan, în timp ce directorul Http conține controllers, middlewares și requests.

O varietate de alte directoare vor fi generate în directorul app pe măsură ce utilizați comenzile make pentru a genera clase. De exemplu, directorul app/Jobs nu va exista până când nu executați comanda Artisan make: job pentru a genera o clasă job.

Multe dintre clasele din directorul app pot fi generate de Artisan prin comenzi. Pentru a revizui comenzile disponibile, rulați comanda php artisan list make în terminalul dvs.

Directorul Broadcasting

Directorul Broadcasting conține toate clasele de canale de difuzare pentru aplicația dvs. Aceste clase sunt generate folosind comanda make:channel. Acest director nu există în mod implicit, dar va fi creat pentru dvs. atunci când creați primul dvs. canal. Pentru a afla mai multe despre canale, consultați documentația privind difuzarea evenimentelor.

Directorul Console

Directorul Console conține toate comenzile Artisan personalizate pentru aplicația dvs. Aceste comenzi pot fi generate folosind comanda make:command. Acest director găzduiește, de asemenea, nucleul consolei dvs., unde sunt înregistrate comenzile dvs. personalizate Artisan și sunt definite sarcinile dvs. programate.

Directorul Events

Acest director nu există în mod implicit, dar va fi creat pentru dvs. prin comenzile Artisan eveniment:generate și make:event. Directorul Events găzduiește clase de evenimente. Evenimentele pot fi folosite pentru a alerta alte părți ale aplicației dvs. că a avut loc o anumită acțiune, oferind o mare flexibilitate și decuplare.

Directorul Exceptions

Directorul Exceptions conține gestionarul de excepții al aplicației dvs. și este, de asemenea, un loc bun pentru a plasa orice excepții aruncate de aplicația dvs. Dacă doriți să personalizați modul în care sunt înregistrate sau redate excepțiile, ar trebui să modificați clasa Handler din acest director.

Directorul Http

Directorul Http conține controllers, middleware și requests de formulare. Aproape toată logica de gestionare a cererilor care intră în aplicația dvs. va fi plasată în acest director.

Directorul Jobs

Acest director nu există în mod implicit, dar va fi creat pentru dvs. dacă executați comanda Artisan make:job. Directorul Job găzduiește joburile pentru aplicația dvs. Job-rile pot fi puse în coadă de aplicația dvs. sau pot rula sincron în cadrul ciclului de viață al cererii curente.

Directorul Mail

Acest director nu există în mod implicit, dar va fi creat pentru dvs. dacă executați comanda Artisan make:mail. Directorul Mail conține toate clasele dvs. care reprezintă e-mailurile trimise de aplicația dvs. Obiectele de poștă vă permit să încapsulați toată logica construirii unui e-mail într-o singură clasă simplă care poate fi trimisă utilizând metoda Mail::send.

Directorul Models

Directorul Models conține toate Eloquent model classes. Eloquent ORM inclus cu Laravel oferă o implementare simplă ActiveRecord pentru lucrul cu baza de date. Fiecare tabel din baza de date îi corespunde un ”Model”, care este utilizat pentru a interacționa cu acel tabel. Modelele vă permit să căutați date în tabelele dvs., precum și să introduceți înregistrări noi în tabel.

Directorul Notifications

Acest director nu există în mod implicit, dar va fi creat pentru dvs. dacă executați comanda make:notification. Directorul Notifications conține toate notificările „tranzacționale” care sunt trimise de aplicația dvs., cum ar fi notificări simple despre evenimente care se întâmplă în cadrul aplicației dvs. Notificarea Laravel prezintă rezumate care trimit notificări pe o varietate de drivere, cum ar fi e-mail, Slack, SMS sau stocate într-o bază de date.

Directorul Policies

Acest director nu există în mod implicit, dar va fi creat pentru dvs. dacă executați comanda make:policy. Directorul Policies conține clasele de politici de autorizare pentru aplicația dvs. Politicile sunt utilizate pentru a determina dacă un utilizator poate efectua o acțiune dată împotriva unei resurse.

Directorul Providers

Directorul Providers conține toți furnizorii de servicii pentru aplicația dvs. Într-o nouă aplicație Laravel, acest director va conține deja mai mulți furnizori. Sunteți liber să vă adăugați proprii furnizori în acest director, după cum este necesar.

Directorul Rules

Acest director nu există în mod implicit, dar poate fi creat pentru tine dacă execuți comanda Artisan make:rule. Directorul Rules conține obiectele de regulă de validare personalizate pentru aplicația dvs. Regulile sunt folosite pentru a încapsula logica de validare complicată într-un obiect simplu. Pentru mai multe informații, consultați documentația de validare.

Configurare

Toate fișierele de configurare pentru framework-ul Laravel sunt stocate în directorul config. Fiecare opțiune este documentată, deci nu ezitați să căutați fișierele și să vă familiarizați cu opțiunile disponibile.

Aceste fișiere de configurare vă permit să configurați lucruri precum informațiile despre conexiunea la baza de date, informațiile despre serverul de poștă electronică, precum și diferite alte valori de configurare de bază, cum ar fi fusul orar al aplicației și cheia de criptare.

Configurarea mediului

Este adesea util să aveți diferite valori de configurare bazate pe mediul în care rulează aplicația. De exemplu, este posibil să doriți să utilizați un alt driver de cache la nivel local decât pe serverul de producție.

Pentru a face acest lucru foarte ușor, Laravel folosește biblioteca PHP DotEnv. Într-o nouă instalare Laravel, directorul rădăcină al aplicației dvs. va conține un fișier .env.example care definește multe variabile de mediu comune. În timpul procesului de instalare Laravel, acest fișier va fi copiat automat în .env.

Fișierul .env implicit al lui Laravel conține câteva valori de configurare comune care pot diferi în funcție de faptul dacă aplicația dvs. rulează local sau pe un server web de producție. Aceste valori sunt apoi extrase din diferite fișiere de configurare Laravel din directorul config folosind funcția env a Laravel.

Dacă vă dezvoltați împreună cu o echipă, vă recomandăm să includeți în continuare un fișier .env.example cu aplicația dvs. Prin introducerea valorilor de substituent în fișierul de configurare de exemplu, alți dezvoltatori din echipa dvs. pot vedea clar ce variabile de mediu sunt necesare pentru a rula aplicația dvs.

Orice variabilă din fișierul dvs. .env poate fi anulată de variabile de mediu externe, cum ar fi variabile de mediu la nivel de server sau la nivel de sistem.

Securitatea fișierelor de mediu

Fișierul dvs. .env nu ar trebui să fie dedicat controlului sursei aplicației dvs., deoarece fiecare dezvoltator / server care utilizează aplicația dvs. ar putea necesita o configurație de mediu diferită. În plus, acesta ar fi un risc de securitate în cazul în care un intrus câștigă acces la codul sursă din repozitoriu.

Editarea fișierului .env

Deschideți fișierul .env din mapa proiectului dvs.



Găsiți următoarele linii și introduceți detaliile dvs. și salvați-le.



Denumirea aplicației

Utilizați următoarea comandă pentru a denumi aplicația:

php artisan app:name Your_Application_Name

Mod de întreținere

Când aplicația dvs. este în modul de întreținere, va fi afișată o vizualizare personalizată pentru toate cererile din aplicația dvs. Acest lucru facilitează „dezactivarea” aplicației în timp ce se actualizează sau când efectuați întreținere. O verificare a modului de întreținere este inclusă în stiva middleware implicită pentru aplicația dvs. Dacă aplicația este în modul de întreținere, se va lansa o excepție MaintenanceModeException cu un cod de stare 503.

Pentru a activa modul de întreținere, executați comanda Artisan down:

php artisan down

Pentru a dezactiva modul de întreținere, utilizați comanda up:

php artisan up

Afișarea conținutului dorit

Odată ce cunoașteți arhitectura Laravel și structura directoarelor și fișierelor, puteți edita și crea fișiere pentru a afișa în browser conținutul pe care îl vreți.

Deschideți interfața Command Line (CMD în Windows), navighează către directorul unde este instalat framework-ul Laravel și rulează această comandă pentru a porni serverul php integrat:

php artisan serve

Dacă accesezi acest URL în browser:

http://localhost:8000/

Va arăta pagina principală predefinită. Pentru a schimba conținutul din această pagină, deschide fișierul welcome.blade.php (în directorul resources/views), și editați conținutul cu orice cod php, html, css, javascript care vreți.

- De exemplu, adăugați acest cod în fișierul welcome.blade.php:

Acum, dacă accesați //localhost:8000 din nou în browser, veți vedea o pagină ca în această imagine:

Partea .blade în numele fișierului welcome.blade.php este pentru utilizare Blade Templates. Dacă redenumești acel fișier în welcome.php, va afișa conținutul fără a interpreta codul Templates de tip Blade.

Rutarea

Principiile rutării

Funcția de bază a oricărui framework este de a prelua cereri de la un utilizator și de a furniza răspunsuri, de obicei prin HTTP(S). Aceasta înseamnă că definirea rutelor unei aplicații este primul și cel mai important lucru de abordat atunci când înveți un framework. Fără rute, nu aveți posibilitatea de a interacționa cu utilizatorul final.

În acest capitol vom examina rutele din Laravel și vom arăta cum să le definim, cum să le îndreptăm către codul pe care ar trebui să-l execute și cum să utilizeze instrumentele de rutare ale Laravel pentru a face față unei game diverse de necesități de rutare.

Definirea rutelor

Într-o aplicație Laravel, veți defini rutele dvs. „web” în routes/web.php și rutele dvs. API în routes/api.php. Rutele web sunt cele care vor fi vizitate de utilizatorii finali; Rutele API sunt cele pentru API-ul dvs., dacă aveți. Deocamdată, ne vom concentra pe rutele din routes/web.php.

Cel mai simplu mod de a defini o rutare este de a potrivi o cale (de exemplu, /) cu o închidere, așa cum se vede în exemplul următor(definirea de bază a rutării):

Multe site-uri web simple pot fi definite în întregime în fișierul rutelor web. În exemplul următor sunt ilustrate câteva rute GET simple combinate cu unele șabloane:

Rutele definite în routes/web.php pot fi accesate întroducând URL-ul rutei definite în browserul dvs. De exemplu, puteți accesa următoarea rută navigând pe localhost:8000/about în browser:

Metode HTTP

Dacă nu sunteți familiarizat cu ideea metodelor HTTP, citiți în acest capitol pentru mai multe informații, dar deocamdată știți că fiecare cerere HTTP are un „verb” sau o acțiune, împreună cu acesta. Laravel vă permite să vă definiți rutele pe baza verbului folosit; cele mai frecvente sunt GET și POST, urmate de PUT, DELETE și PATCH. Fiecare metodă comunică un lucru diferit serverului și codului dvs. despre intențiile apelantului.

Verbe de rutare

Observați că folosim Route::get în definirea rutelor noastre. Aceasta înseamnă că îi spunem lui Laravel să se potrivească numai pentru aceste rute atunci când cererea HTTP folosește acțiunea GET. Dar dacă este un formular POST, sau poate unele scripturi JavaScript care trimit cereri PUT sau DELETE? Există câteva alte opțiuni pentru metodele date de a apela la o definiție a rutei, așa cum este ilustrat în exemplul următor:

Uneori poate fi necesar să definiți o rută care răspunde la mai multe verbe HTTP. Puteți face acest lucru folosind metoda match. Sau puteți chiar să definiți o rută care răspunde la toate verbele HTTP folosind metoda any:

Redirecționare rute

Dacă definiți o rută care redirecționează către un alt URI, puteți utiliza metoda Route::redirect. Această metodă oferă o comandă rapidă, astfel încât nu trebuie să definiți o rută completă sau un controler pentru a efectua o redirecționare simplă:

Rutele View

Dacă ruta trebuie doar să returneze o vizualizare, puteți utiliza metoda Route::view. Ca și metoda redirecționării, această metodă oferă o scurtătură simplă, astfel încât nu trebuie să definiți o rută completă sau un controller. Metoda view acceptă un URI ca prim argument și un nume de vizualizare ca al doilea argument. În plus, puteți furniza o serie de date pentru a trece la vizualizare ca un al treilea argument opțional:

Parametrii rutelor

Parametri obligatorii

Uneori, va trebui să capturați segmente ale URI pe ruta dvs. De exemplu, poate fi necesar să capturați un ID al utilizatorului de pe adresa URL. Puteți face acest lucru prin definirea parametrilor de traseu:

Puteți defini parametri de rută cât de mulți sunt necesari pentru ruta dvs.:

Parametrii sunt întotdeauna încadrați în {} și sunt alcătuite din caractere alfabetice și poate să nu conțină caracterul -. În loc să folosiți caracterul -, folosiți caracterul subliniere (_).

Rute personalizate

Puteți denumi rute ce permit generarea convenabilă de adrese URL sau redirecționări pentru rute specifice. Puteți specifica un nume pentru o rută prin încadrarea numelui metodei în definiția rutei:

Puteți specifica, de asemenea, numele rutelor pentru acțiunile controlorului:

Generarea adreselor URL către rutele denumite

După ce ați atribuit un nume unei rute date, puteți utiliza numele rutei atunci când generați adrese URL sau redirecționări prin intermediul funcției de rută globală:


Controller-e

În cadrul MVC, litera „C” reprezintă Controller. Acționează ca o direcționare a traficului între vizualizări și modele. Controller-ele grupează logica de gestionare a cererilor aferente într-o singură clasă. Controlerele sunt stocate în directorul app/Http/Controllers.

Crearea unui controler

Deschideți promptul sau terminalul de comandă bazat pe sistemul de operare pe care îl utilizați și tastați următoarea comandă pentru a crea controller folosind artisan.

php artisan make:controller NameController

Înlocuiți NameController cu numele controlerului. Fișierul creat poate fi văzut în mapa app/Http/Controllers. Veți vedea că unele coduri de bază au fost deja făcute pentru dvs. și puteți adăuga codurile personalizate. Controller-ul creat poate fi apelat din routes/web.php prin următoarea sintaxă:

Exemplu

Pasul 1 - Executați următoarea comandă pentru a crea controllerul MyController.

php artisan make:controller MyController

Pasul 2 - După executarea cu succes, veți primi următorul mesaj:

Pasul 3 - Va crea un nou fișier numit MyController.php în directorul app/Http/Controllers cu un cod de bază. Controller-ul creat extinde clasa Controller de bază inclusă în Laravel.

Acest fișier MyController.php poate fi creat manual și apoi de adăugat codul de mai sus.

Folosirea Route cu Controller

În clasa MyController putem crea metode care pot fi folosite în rute (în web.php).

Pasul 1 - Creați o metodă publică numită index() care primește obiectul Request și returnează o pagină view cu date pentru template.

Pasul 2 - În directorul resources/views creați un fișier index.blade.php cu ceva conținut, de exemplu:

Pasul 3 - Folosiți metoda index()din controllerul MyController în route-ul pentru pagina principală "/" (în routes/web.php ștergeți route-ul get() existent pentru '/'), adăugați:

Pasul 4 - Deschideți bowser-ul și accesați localhost:8000, va afișa conținutul creat în index.blade.php, o pagină ca imaginea de mai jos:

Controller-ul resursă

Controller-ul resursă (Resource Controller) este o clasă Controller care conține toate metodele pentru a efectua operațiuni CRUD (Create, Read, Update, Delete).

Pentru a crea un resource controller folosiți următoarea comandă în CLI:

php artisan make:controller NameController --resource

De exemplu, să creăm un controller care se ocupă de toate cererile HTTP pentru fotografiile stocate în aplicația Laravel.

Pasul 1 - Scrieți următoarea comandă în CLI:

php artisan make:controller PhotoController --resource

Se va crea un fișier PhotoController.php în directorul app/Http/Controllers, cu o clasă care extinde clasa Controller de bază, și câte o metodă pentru fiecare din operațiunile CRUD valabile.

Pasul 2 - Adăugați un șir simplu la return în fiecare metodă a clasei PhotoController pentru a face teste.

Copiați următorul cod în fișierul PhotoController.php:

Pasul 3 - Adaugați următoarea linie de cod în fișierul routes/web.php.

Această singură instrucțiune crează multiple Route pentru a se ocupa de mai multe tipuri de apelări.

Tip-Apel URI Actiune Nume Route
GET /photos index photos.index
GET /photos/create create photos.create
POST /photos store photos.store
GET /photos/{photo} show photo.show
GET /photos/{photo}/edit edit photos.edit
PUT/PATCH /photos/{photo} update photos.update
DELETE /photos/{photo} destroy photos.destroy

Notă: Puteți înregistra mai multe controlere de resurse simultan:

Pasul 4 - Încercați să executați URL-urile din următorul tabel:

URL Descriere Output
http://localhost:8000/photo Executa metoda index() din PhotoController.php index
http://localhost:8000/photo/create Executa metoda create() din PhotoController.php create
http://localhost:8000/photo/1 Executa metoda show() din PhotoController.php show
http://localhost:8000/photo/1/edit Executa metoda edit() din PhotoController.php edit

Deoarece formularele HTML nu pot face cereri PUT, PATCH (pentru update) sau DELETE (pentru ștergere), va trebui să adaugați un câmp ascuns, cu name='method_' pentru a indica aceste tipuri de cereri HTTP. Funcția method_field() poate crea automat acest câmp:

{{method_field('PUT')}}

Pentru a afla ce route-uri sunt valabile în aplicația curentă, rulează în CLI următoarea comandă:

php artisan route:list

Se va afișa o listă cu toate route-urile valabile.

Vederi

În cadrul MVC, litera „V” reprezintă Views(Vederi). Vederile conțin HTML-ul (difuzat) de aplicația dvs. Vederile separă logica aplicației de logica de prezentare. Fișierele View au extensia .php sau .blade.php dacă se folosește șabblonul Blade și pot conține cod HTML, CSS, JavaScript și PHP. Vederile sunt stocate în directorul resource/view. O vedere simplă ar putea arăta astfel:

Pentru a vizualiza acest View definim următoarea rută în fișierul web.php din directoriul routes:

Primul argument transmis asistentului de vizualizare corespunde numelui fișierului de vizualizare din directorul resouce/view. Al doilea argument este un array de date care ar trebui să fie puse la dispoziția vederii. În cazul dat, se transmite variabila nume, care este afișată în vedere folosind sintaxa Blade.

Vederile se pot afla de asemenea și în subdirectoarele directorului resources/views. Notarea „punct” poate fi utilizată pentru a face referire la vederile din subdirector. De exemplu, dacă vederea dvs. este stocată în resources/views/admin/profile.blade.php, este posibil să faceți referire astfel:

Determinarea dacă o vedere există

Dacă trebuie să determinați dacă există o vedere, puteți utiliza fațada View. Metoda exists va returna true dacă vederea există:

Transmiterea datelor vederii

După cum ați văzut în exemplele anterioare, este posibil să transmiteți un tablou de date către vederi:

La transmiterea informațiilor în acest mod, datele ar trebui să fie un tablou de perechi cheie/valoare. În interiorul vederii, puteți accesa fiecare valoare folosind cheia corespunzătoare, cum ar fi:

Ca o alternativă la transmiterea unui tablou complet de date funcției view, puteți utiliza metoda with pentru a adăuga părți de date individuale în vizualizare:

Sau

Sau

Șablonul Blade

Blade este un motor simplu, dar puternic de șablonizare, prevăzut de Laravel. Spre deosebire de alte motoare populare de șablonizare PHP, Blade nu vă restricționează să utilizați codul PHP simplu în vederile dvs. De fapt, toate vederile Blade sunt compilate în cod PHP simplu și sunt memorate în cache până când sunt modificate, ceea ce înseamnă că Blade supraîncarcă "zero" aplicația ta. Fișierele de vizualizare Blade folosesc extensia de fișier .blade.php și sunt de obicei stocate în directorul resources/view.

Moștenire în șabloane

Două dintre avantajele principale ale utilizării Blade-ului sunt moștenirile și secțiunile șabloane. Pentru a începe, să aruncăm o privire la un exemplu simplu. În primul rând, vom examina o structură a paginii "master". Deoarece majoritatea aplicațiilor web păstrează același șablon general pe diverse pagini, este convenabil să definiți acest șablon ca o singură vedere Blade:

După cum vedeți, acest fișier conține marcaj HTML tipic. Directiva @section, așa cum sugerează și numele, definește o secțiune de conținut, în timp ce directiva @yield este utilizată pentru a afișa conținutul unei anumite secțiuni.

Acum că am definit un șablon pentru aplicația noastră, să definim o pagină copil care moștenește acest șablon.

Extinderea șablonului

Când definiți o vedere pentru copii, utilizați directiva Blade @extends pentru a specifica ce șablon ar trebui să "moștenească" vederea copil. Vederea care extind un șablon Blade pot injecta conținut în secțiunile șablonului folosind directivele @section. Nu uitați, așa cum se vede în exemplul de mai sus, conținutul acestor secțiuni va fi afișat în șablon folosind @yield:

Unde directivele:

  • @extends('layouts.app') - extinde șablonul "app" stocat în directorul layouts/.
  • @section('title', 'Page Title') - definește valoarea pentru secțiunea titlu.
  • @section('sidebar') - definește o secțiune sidebar în această pagină copil.
  • @parent - afișează conținutul secțiunii sidebar, definit în layout-ul master "app".
  • @endsection - închide secțiunea.
  • @section('content') - crează conținut pentru @yield('content') definit în șablonul "app".

Definiți următoarea rută în fișierul web.php:

Dacă accesați 127.0.0.1:8000/child în browser, veți vedea o pagină ca în această imagine:


Middleware

Middleware acționează ca un intermediar între cerere și răspuns, asigură un mecanism pentru filtrare cereri HTTP. Spre exemplu Laravel include un middleware care verifică dacă utilizatorul aplicației este autentificat sau nu. Dacă utilisatorul este autentificat, el va fi redirecționat către homepage, altfel va fi redirecționat către pagina de login.

Există câteva middleware incluse în framework-ul Laravel, inclusiv middleware pentru autentificare și protecție CSRF. Toate aceste middleware-uri sunt localizate în directorul app/Http/Middleware/.

Definire Middleware

Poți crea propriul middleware pentru a filtra și a prelucra cererile înainte de a returna raspunsuri. Pentru a crea un Middleware poți folosi comanda artisan make:middleware în CLI.

php artisan make:middleware MiddlewareName

- Exemplu, în interfața Command Line, navighează către directorul cu proiectul Laravel și execută această comandă pentru a crea un middleware CheckAge:

php artisan make:middleware CheckAge

Aceasta va crea un nou fișier numit CheckAge.php în directorul app/Http/Middleware/ cu o clasă CheckAge și o metodă handle():