Dezvoltarea aplicat iilor WEB cu [625375]
Ministerul Educat ¸iei Nat ¸ionale s ¸i Cercet ˘arii S ¸tiint ¸ifice
Universitatea ”OVIDIUS” Constant ¸a
Facultatea de Matematic ˘a s ¸i Informatic ˘a
Specializarea Informatic ˘a
Dezvoltarea aplicat ¸iilor WEB cu
LARA VEL
Lucrare de licent ¸ ˘a
Coordonator s ¸tiint ¸ific:
Lector dr. Ciuc ˘a Marian-George
Absolvent: [anonimizat] ¸a
2016
Cuprins
Cuprins i
Lista Figurilor iii
Lista Tabelelor 1
Introducere 2
1 Soft-uri utilizate 3
1.1 Brackets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Sublime Text 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 XAMPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Tehnologii utilizate 7
2.1 PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
i
Cuprins Cuprins
3 LARA VEL 19
3.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Caracteristici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Instalare s ¸i configurare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4 Structura unei aplicat ¸ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5 MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.6 HTTP Routing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.7 Protect ¸ia CSRF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.8 HTTP Middleware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.9 HTTP Controllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.10 HTTP Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.11 HTTP Responses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.12 Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.13 Blade Template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.14 Artisan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.15 Eloquent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.16 Baza de date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4 Dezvoltarea aplicat ¸iei software 36
4.1 Documentul de cerint ¸e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.2 Descrierea cazurilor de utilizare . . . . . . . . . . . . . . . . . . . . . . . 38
4.3 Diagrama cazurilor de utilizare . . . . . . . . . . . . . . . . . . . . . . . . 42
4.4 Diagrama de activit ˘at ¸i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5 Implementare 46
Concluzii 55
Bibliografie 56
ii
Lista Figurilor
1.1 Pagina principal ˘aˆın Brackets . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Codul ˆın Brackets s ¸i evident ¸ierea unui element selectat . . . . . . . . . . . . . 4
1.3 Exemplificare cod ˆın Sublime Text 2 . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Codul ˆın Sublime Text s ¸i evident ¸ierea contrastului . . . . . . . . . . . . . . . . 5
1.5 Programul XAMPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1 Programul ”Hello World” scris ˆın PHP ˆımpreun ˘a cu codul HTML . . . . . . . 9
2.2 Exemplu funct ¸ie predefinit ˘a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Exemplu de cod scris ˆın HTML 5 . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Exemplu de cod scris ˆın CSS 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5 Pagina PHPMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1 Instalare Composer ˆın linia de comand ˘a . . . . . . . . . . . . . . . . . . . . . 22
3.2 Instalare Laravel ˆın linia de comand ˘a . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Crearea unei noi aplicat ¸ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4 Finalizarea aplicat ¸iei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5 Aplicat ¸ia nou ˘a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.6 Folderul nou creat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.7 Model-View-Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
iii
Lista Figurilor Lista Figurilor
4.1 Diagrama cazurilor de utilizare . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2 Diagrama de activit ˘at ¸i a cazului de utilizare ˆInregistrare . . . . . . . . . . . . . 43
4.3 Diagrama de activit ˘at ¸i a cazului de utilizare Solicit ˘aProgramare . . . . . . . . . 44
4.4 Diagrama de activit ˘at ¸i a cazului de utilizare R ˘aspunsProgramare . . . . . . . . 44
4.5 Diagrama de activit ˘at ¸i a cazului de utilizare CereSfat . . . . . . . . . . . . . . 45
4.6 Diagrama de activit ˘at ¸i a cazului de utilizare Ofer ˘aSfat . . . . . . . . . . . . . . 45
5.1 Pagina de start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.2 Instalare Composer ˆın linia de comand ˘a . . . . . . . . . . . . . . . . . . . . . 47
5.3 Aplicat ¸ia nou ˘a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.4 Folderul nou creat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.5 Comanda PHP Artisan Serve . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.6 Pagina de Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.7 Pagina de Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.8 Pagina .env . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.9 Migrarea pentru create users tabel . . . . . . . . . . . . . . . . . . . . . . . . 51
5.10 Migrarea pentru password reset . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.11 Baza de date ˆın PHPMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.12 Pagina AuthController.php . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.13 Pagina Solicit ˘aProgramare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.14 Pagina de migrare pentru programare . . . . . . . . . . . . . . . . . . . . . . . 54
iv
Lista Tabelelor
4.1 Fluxul principal al cazului de utilizare: ˆInregistrare . . . . . . . . . . . . . 38
4.2 Fluxul principal al cazului de utilizare: Solicit ˘aProgramare . . . . . . . . . 39
4.3 Fluxul principal al cazului de utilizare: R ˘aspunsProgramare . . . . . . . . . 40
4.4 Fluxul principal al cazului de utilizare: CereSfat . . . . . . . . . . . . . . . 41
4.5 Fluxul principal al cazului de utilizare: Ofer ˘aSfat . . . . . . . . . . . . . . 41
1
Introducere
ˆIn aceast ˘a lucrare voi aborda crearea unei aplicat ¸ii web folosind framework-ul Laravel.
Cuvˆantul englez framework defines ¸te, ˆın termeni generali, un ansamblu standardizat de
concepte, practici s ¸i criterii pentru a se aplica asupra unui tip particular de problematic ˘a, ce
serves ¸te ca referint ¸ ˘a pentru a propune s ¸i rezolva probleme cu conotat ¸ii similare.
ˆIn dezvoltarea de software un framework este o structur ˘a conceptual ˘a s ¸i reprezint ˘a o
arhitectur ˘a de software care modeleaz ˘a relat ¸iile generale ale entit ˘at ¸ilor domeniului.
Aporteaz ˘a o structur ˘a s ¸i o metodologie de munc ˘a pe care aplicat ¸iile domeniului web o
extind sau utilizeaz ˘a.
Pentru acest proiect am creat o aplicat ¸ie web pentru un Cabinet Medical. Prin aceast ˘a
pagin ˘a un eventual pacient sau doctor creaz ˘a un cont specific s ¸i dores ¸te s ˘a fac ˘a o programare.
Aceast ˘a aplicat ¸ie foloses ¸te foarte multe din cunos ¸tint ¸ele de baz ˘a necesare cre ˘ari oric ˘arei
alte aplicat ¸ii ˆın Laravel, ceea ce face din ea un exemplu foarte bun pentru orice dezvoltator
neexperimentat.
Lucrarea este ˆımp˘art ¸it˘a pentru o parcurgere mai fluent ˘a,ˆıncep ˆand cu soft-urile utilizate,
urmˆand cu tehnologiile utilizate ˆın crearea oric ˘arei aplicat ¸ii web s ¸i finaliz ˆand cu imple-
mentarea aplicat ¸iei.
Am ales aceast ˘a tem ˘a deoarece ˆın viitor as ¸ dori s ˘a lucrez ˆın domeniu, iar pentru asta
trebuie s ˘aˆıncepi de undeva.
2
Capitolul 1
Soft-uri utilizate
1.1 Brackets
Ap˘arutˆın anul 2014 s ¸i apart ¸in ˆand celor de la Adobe Systems, Brackets este un text-
editor open-source, gratis, scris ˆın HTML, CSS s ¸i JavaScript focus ˆandu-se pe segmentul de
Web Development.
Aceasta ofer ˘a mai multe funct ¸ionalit ˘at ¸i:
Figura 1.1: Pagina principal ˘aˆın Brackets
3
Soft-uri utilizate Sublime Text 2
.Editare rapid ˘a a elementelor de CSS s ¸i JavaScript pentru developeri
.Live preview
.Open source
.Funct ¸ionalitate crescut ˘a datorit ˘a update-urilor elementelor HTML s ¸i CSS ˆın timp real
s ¸i evident ¸ierea elementelor selectate ˆın browser.
Figura 1.2: Codul ˆın Brackets s ¸i evident ¸ierea unui element selectat
1.2 Sublime Text 2
Sublime Text este un editor de text s ¸i cross-platform, cu o interfat ¸ ˘a Python API (appli-
cation programming interface). Aceasta sust ¸ine mai multe limbaje de programare s ¸i limbaje
markup, iar funct ¸ionalitatea acestuia poate fi extins ˘a c˘atre utilizatori s ¸i plugin-uri.
Figura 1.3: Exemplificare cod ˆın Sublime Text 2
4
Soft-uri utilizate Sublime Text 2
Facilit ˘at ¸ile utiliz ˘arii Sublime Text 2:
.Goto Anything-acces rapid la fis ¸iere, simboluri sau linii de cod.
.Command palette
.Editare simultan ˘a pentru a permite editarea simultan ˘a a mai multor arii selectate
.Plugin API Python
.Completare automat ˘a
.Sintax ˘a evident ¸iat ˘a s ¸i afis ¸are cu contrast ridicat
Figura 1.4: Codul ˆın Sublime Text s ¸i evident ¸ierea contrastului
5
Soft-uri utilizate XAMPP
1.3 XAMPP
XAMPP este un pachet de programe open source, cross-platform web server s ¸i free soft-
ware, care const ˘aˆın Apache HTTP Server, database MySQL s ¸i interpretoare pentru scrip-
turile scrise ˆın limbajele de programare PHP s ¸i Perl.
XAMPP este un acronim pentru: X de la Cross-Platform, A de la Apache, M de la
MariaDB, P de la PHP s ¸i P de la Perl. Acest program act ¸ioneaz ˘a ca s ¸i un web server capabil
de a servi pagini dinamice, dezvoltarea acestora, utiliz ˆand limbaje de programare ca PHP,
JSP, Servlets. Este disponibil pentru Windows, Linux, Mac OS X.
Figura 1.5: Programul XAMPP
Designerii programului au avut intent ¸ia de a-l utiliza numai ca utilitar de dezvoltare,
pentru a permite designerilor s ¸i programatorilor web s ˘aˆıs ¸i testeze munca pe calculatoarele
proprii, f ˘ar˘a a avea nevoie de acces la Internet. Pentru a face posibil acest lucru, multe
caracteristici de securitate importante sunt dezactivate ˆın mod implicit. In practic ˘a, totus ¸i,
XAMPP este uneori utilizat pentru a servi pagini web ˆın World Wide Web. Un utilitar special
este asigurat pentru a proteja prin parol ˘a cele mai importante p ˘art ¸i ale pachetului.
XAMPP asigur ˘a suport pentru crearea s ¸i manipularea bazelor de date ˆın MySQL s ¸i
SQLite ˆıntre utilizatori.
Utilizatorul MySQL implicit este ”root”, iar acesta nu are o parol ˘a MySQL implicit ˘a.
Cu programul batch resetroot.bat din subdirectorul mysql al directorului unde este instalat
XAMPP, putet ¸i reseta acest utilizator ˆıncˆat s˘a aib ˘a parola vid ˘a.
6
Capitolul 2
Tehnologii utilizate
2.1 PHP
Introducere ˆın PHP
PHP-ul este un limbaj de programare, init ¸ial acesta se numea Personal Home Page,
ulterior schimb ˆandu-s ¸i denumirea ˆıntr-un acronim recursiv: Php:Hypertext Preprocessor.
Acesta a fost folosit init ¸ial pentru a produce pagini web dinamice s ¸i este folosit pe scar ˘a
larg˘aˆın dezvoltarea paginilor s ¸i aplicat ¸iilor web. ˆIn principal se foloses ¸te ˆınglobat ˆın codul
HTML, dar se poate folosi s ¸i ˆın mod ”linie de comand ˘a”(CLI), permit ¸ ˆand astfel crearea
aplicat ¸iilor independente. Este unul dintre cele mai importante limbaje de programare web
open-source s ¸i server-side, exist ˆand versiuni disponibile pentru majoritatea serverelor web s ¸i
pentru toate sistemele de operare.
PHP 5 a fost lansat o dat ˘a cu Zend Engine II, ce a adus o orientare obiect mai pronunt ¸at ˘a
s ¸i suport ˆand mai multe caracteristici ale acestui tip de programare.
.Suport ˆımbun ˘at˘at ¸it pentru OOP.
.Introduce extensia PDO-PHP Data Objects,care defines ¸te o modalitate mai us ¸oar ˘a de
accesare a bazelor de date.
.ˆImbun ˘at˘at ¸iri de performant ¸ ˘a.
.Suport ˆımbun ˘at˘at ¸it pentru MySQL.
.Suport pentru SQLite.
.Iteratori de date.
.Controlul erorilor prin tratarea de except ¸ii.
Dezvoltarea PHP 5 a adus la scoaterea din uz a PHP 4.
PHP 7 are urm ˘atoarele ˆımbun ˘at˘at ¸iri s ¸i modific ˘ari:
7
Tehnologii utilizate PHP
.ˆImbun ˘at˘at ¸irea suportului pentru Unicode.
.Retragerea definitiv ˘a a funct ¸iilor register globals s ¸i magic quotes, precum s ¸i a vari-
abilelor tip $HTTP Vars.
.Var va fi un alias pentru public s ¸i folosirea lui va ridica o atent ¸ionare E STRICT.
.Suport pentru int pe 64 bit ¸i.
.Taguri de ASP sunt retrase definitiv.
.XMLReader, XMLWriter, Fileinfo vor face parte din distribut ¸ia principal ˘a.
.Pachetele Freetype1, GD1, mime magic au fost scoase din distribut ¸ia principal ˘a.
.Funct ¸ia ereg() nu mai este disponibil ˘a.
.Generarea erorii E STRICT ˆın cazul instant ¸ierii obiectelor prin referint ¸ ˘a (& new Obiect()).
.Includerea tuturor erorilor de tip E STRICT ˆın E ALL.
.Ad˘augarea instruct ¸iunii goto pentru a permite salturi la un alt bloc de comenzi.
.Devin rezervate cuvintele: namespace, import s ¸i goto.
.Pentru accesarea caracterelor dintr-un s ¸ir (string) se va folosi operatorul [], fgfiind
scos din uz.
.Pentru folosirea funct ¸iilor de citire/scriere devin disponibile constantale FILE BINARY
s ¸i FILE TEXT.
.foreach va suporta array multi dimensional.
.Valoarea true nu mai este obligatorie pentru operatorul ternar.
.A fost ˆınl˘aturat ˘a opt ¸iunea safe mode.
.A fost ˆınl˘aturat operatorul and.
.Funct ¸ia microtime() returneaz ˘a un float.
.A fost ˆınl˘aturat zend.ze1 compatibility mode.
ˆIntre 2014 s ¸i 2015, o nou ˘a versiune de PHP era ˆın development, PHP 7. Fundat ¸ia noii
versiuni este de fapt o ramur ˘a a PHP-ului, care a fost numit ˘a init ¸ial PHP next generation
(PHPng). Acestea sunt urm ˘atoarele modific ˘ari:
Mai multe mecanisme de eroare, fatal sau recoverable-level legacy, au fost ˆınlocuite cu
except ¸ii moderne, orientate obiect.
Sintaxa pentru variabilele de referint ¸e au fost remodelate astfel ˆıncˆat s˘a fie pe plan intern
mai coerente s ¸i complete, care s ˘a permit ˘a utilizarea operatorilor: [], (), fgs ¸i :: cu expresii
arbitrare left-hand-side.
Descurajarea scrierii metodelor de tip constructor ˆın stilul PHP4.
Declarat ¸ia foreach a fost modificat ˘a pentru a fi mai previzibil ˘a.
Pentru consecvent ¸ ˘a, constructorii pentru clasele built-in care returnau NULL la es ¸ec, au
fost modificat ¸i pentru a arunca o except ¸ie ˆın schimb.
Mai multe interfet ¸e ne ˆıntret ¸inute sau perimate de programele aplicat ¸iilor server(API),
precum s ¸i extensiile au fost eliminate din nucleul PHP.
Operatorul list() a fost modificat astfel ˆıncat s ˘a nu mai aib ˘a suport pentru string-uri.
A fost eliminat suportul pentru numere hexazecimale ˆın unele conversii implicite din
s ¸iruri de caractere ˆın numere.
Pentru consistent ¸a pe mai multe platforme, operatorii left-shift s ¸i right-shift au fost
modificat ¸i.
Conversiile ˆıntre numere ˆıntregi s ¸i numere reale cu virgul ˘a au fost puse ˆın aplicare mai
uniform ˆın toate platformele.
8
Tehnologii utilizate PHP
Acesta include s ¸i noi caracteristici ale limbajului. Cele mai notabile fiind returnarea
tipului de declarat ¸ie pentru funct ¸ii care completeaz ˘a declarat ¸iile existente pentru parametrii
s ¸i suportul ˆın cazul tipurilor scalare ˆın declarat ¸iilor de tip paramatru s ¸i return. PHP-ul este
unul dintre cele mai folosite limbaje de programare server-side datorit ˘a urm ˘atoarelor carac-
teristici:
.Sintaxa limbajului este us ¸oar ˘a, combin ˆand sintaxele unor limbaje populare.
.Nu este nevoie de includerea unor biblioteci sau directive de compilare, codul este in-
clusˆıntr-un document, execut ˆandu-se ˆıntre marcaje speciale, rezult ˆand o sintax ˘a destul
de liber ˘a.
.Datorit ˘a eficient ¸ei aloc ˘arii resurselor, foarte necesare unui mediu multi-utilizator.
.Punerea la dispozit ¸ie a unor seturi flexibile s ¸i eficiente de m ˘asuri de sigurant ¸ ˘a.
.Flexibilitatea acestuia, acesta nefiind legat de un anumit server web, a fost integrat
pentru numeroase servere web existente.
.Dezvolatrea PHP-ului se afl ˘a sub licent ¸a open-source, care permite adaptarea rapid ˘a,
eficientizarea s ¸i securizarea codului.
Sintax ˘a
Programul ”Hello World” scris ˆın PHP ˆımpreun ˘a cu codul HTML:
Figura 2.1: Programul ”Hello World” scris ˆın PHP ˆımpreun ˘a cu codul HTML
Interpretorul PHP execut ˘a numai cod PHP ˆın cadrul delimit ˘arilor sale. Orice din afara
delimit ˘arilor sale nu este procesat de PHP. Cele mai frecvente sunt delimitatorii: ” <?” s ¸i
”?>”. Scopul tuturor acestor delimitatori este de a separa codul PHP de cont ¸inut non-PHP,
cum ar fi codul JavaScript sau HTML.
Variabilele sunt prefixate cu un simblo dolar $, iar tipul nu este nevoie s ˘a fie specificat
ˆın prealabil.
Spre deosebire de numele de funct ¸ii s ¸i de clas ˘a, numele variabilelor sunt case sensitive.
PHP-ul trateaz ˘a liniile lor ca s ¸i whitespace al unei limbi sub form ˘a liber ˘a, iar declarat ¸iile se
termin ˘aˆın punct s ¸i virgul ˘a. Exist ˘a trei tipuri de comentariu de sintax ˘a: pentru a marca at ˆat
un bloc de instruct ¸iuni c ˆat s ¸i comentarii inline /* */; // s ¸i # sunt utilizate pentru a comenta o
singur ˘a linie. Instruct ¸iunea ”echo” este una dintre cele mai multe dot ˘ari ale PHP-ului care
ofer˘a un output textului.
9
Tehnologii utilizate PHP
ˆIn ceea ce prives ¸te cuvintele cheie s ¸i sintaxa limbii, PHP-ul are o sintax ˘a asem ˘an˘atoare
C-ului. Condit ¸iile pentru if, for, while s ¸i funct ¸iile de returnare sunt similare ca s ¸i sintax ˘a cu
limbaje de programare precum C, C++, C# sau Java.
Tipuri de date
PHP-ul ˆınmagazineaz ˘a numere ˆıntregi dintr-o gam ˘a dependent ˘a de platform ˘a, fie pe 64
de bit ¸i sau 32 de bit ¸i. Numerele ˆıntregi f ˘ar˘a semn sunt convertite la valori cu semne, ˆın an-
umite situat ¸ii; acest lucru este diferit fat ¸ ˘a de alte limbaje de programare. Variabilele de tip
integer pot fi atribuite folosind zecimala (pozitiv ˘a s ¸i negativ ˘a), octal, hexazeciman s ¸i notat ¸iile
binare.
Numerele ˆın virgul ˘a mobil ˘a sunt de asemenea, stocate ˆıntr-o gam ˘a specific ˘a plat-
formei. Ele pot fi specificate folosind virgul ˘a mobil ˘a, ca s ¸i notat ¸ie, sau dou ˘a forme de notat ¸ii
specifice. PHP-ul are un tip boolean nativ, care este similar cu cel din Java s ¸i C++. Cu
ajutorul regulilor de conversie de tip Boolean, valori non-zero, sunt interpretate ca fiind
adev ˘arate s ¸i zero, ca fiind false, la fel ca ˆın C++.
Tipul de date nul reprezint ˘a o variabil ˘a care nu are nici o valoare; NULL este sin-
gura valoare permis ˘a pentru acest tip de date.
Variabilele de tip ”resursa” reprezint ˘a trimiteri la resurse din surse externe. Acestea
sunt,de obicei create de funct ¸ii, dintr-o anumit ˘a extensie, s ¸i pot fi prelucrate doar de funct ¸ii
din aceeas ¸i extensie. Exemplele includ fis ¸iere, imagini s ¸i resurse din baze de date.
Matricele pot cont ¸ine elemente din orice tip pe care PHP ˆıl poate ocupa, inclusiv
resurse, obiecte s ¸i chiar vectori. Ordinea se p ˘astreaz ˘aˆın liste de valori s ¸i ˆın hash-uri cu am-
bele chei s ¸i valori. De asemenea, acesta sust ¸ine s ¸iruri de caractere, care pot fi utilizate cu
ghilimele simple, duble, nowdoc sau sintaxa heredoc.
Biblioteca Standard PHP (SPL) ˆıncearc ˘a s˘a rezolve probleme standard s ¸i pune ˆın
aplicare interfet ¸e eficiente de acces la date s ¸i clase.
Funct ¸ii
PHP-ul are sute de funct ¸ii ˆıncorporate s ¸i alte c ˆateva mii disponibile prin intermediul
extensiilor. Exist ˘a s ¸i funct ¸ii definite de developeri:
Figura 2.2: Exemplu funct ¸ie predefinit ˘a
ˆIn mod implicit, declarat ¸iile de tip scalare urmeaz ˘a principii slabe de tipizare. Deci, dac ˘a
10
Tehnologii utilizate PHP
tipul unui parametru este int, PHP ar permite nu numai numere ˆıntregi, dar, de asemenea,
s ¸iruri numerice de caractere, float, boolean ar fi trecut la aceast ˘a funct ¸ie, s ¸i le-ar converti.
Obiecte
Baza program ˘arii orientat ˘a spre obiecte s-a ad ˘augat ˆın PHP 3 s ¸i s-a ˆımbun ˘at˘at ¸itˆın PHP 4.
Asta a permis programatorilor, deoarece s-a obt ¸inut o abstractizare mai bun ˘a, o accesare mai
facil˘a a limbajului, iar crearea sarcinilor a devenit mai us ¸oar ˘a. Pentru PHP 5, manipularea
obiectelor a fost complet rescris ˘a pentru extinderea setului de caracteristici s ¸i ˆımbun ˘at˘at ¸irea
performant ¸iei.
PHP 5 a introdus variabile private s ¸i protejate, membre s ¸i metode, ˆımpreun ˘a cu clase
abstracte, clase finale, metode abstracte s ¸i metode finale. Acesta a introdus, de asemenea, o
modalitate standard de a declara constructori s ¸i destructori, similar cu cel al altor limbaje ori-
entate spre obiecte, cum ar fi C++ sau Java, s ¸i un model standard de manipulare a except ¸iilor.
Mai mult dec ˆat atˆat, acesta a ad ˘augat interfet ¸e s ¸i posibilitatea de a avea mai multe interfet ¸e
simultan. Exist ˘a interfet ¸e speciale care permit obiectelor s ˘a comunice cu sistemul de rulare.
ˆIn cazul ˆın care dezvoltatorul creaz ˘a o copie a unui obiect folosind clona cuv ˆant rezervat,
motorul Zend va verifica dac ˘a o metod ˘aclone() a fost definit ˘a.ˆIn caz contrar, se va apela
un clone() implicit, care va copia propriet ˘at ¸ile obiectului. Pentru comoditate, motorul va
furniza o funct ¸ie care import ˘a propriet ˘at ¸ile obiectului surs ˘a, astfel ˆıncˆat programatorul poate
ˆıncepe cu o replic ˘a, prin valoarea obiectului surs ˘a s ¸i suprascrie doar propriet ˘at ¸ile care trebui-
esc schimbate.
Exemplu de program orientat-obiect ˆın PHP:
class Person
{
public $firstName;
public $lastName;
public function __construct($firstName, $lastName = ’’) {
$this->firstName = $firstName;
$this->lastName = $lastName; }
public function greet() {
return ’Hello, my name is ’ . $this->firstName .
(($this->lastName != ’’) ? (’ ’ . $this->lastName) : ’’) .
’.’; }
public static function staticGreet($firstName, $lastName) {
return ’Hello, my name is ’ . $firstName . ’ ’ . $lastName .
’.’; } }
$he = new Person(’John’, ’Smith’);
$she = new Person(’Sally’, ’Davis’);
$other = new Person(’iAmine’);
echo $he->greet();
echo ’<br />’;
echo $she->greet();
echo ’<br />’;
11
Tehnologii utilizate PHP
echo $other->greet();
echo ’<br />’;
echo Person::staticGreet(’Jane’, ’Doe’);
Vizibilitatea propriet ˘at ¸ilor s ¸i a metodelor este definit ˘a prin folosirea cuvintelor cheie
public, private s ¸i protected. Implicit este public, ˆın cazul ˆın care se utilizeaz ˘a numai var; var
este s ¸i un sinonim pentru public. Articolele declarate public pot fi accesate oriunde, dar se
limiteaz ˘a accesul la clasele protejate, mos ¸tenite. Vizibilitatea la obiectele private se limiteaz ˘a
doar la clasa care defines ¸te acea clas ˘a. Obiectele de acelas ¸i tip tind s ˘a aib ˘a acces reciproc la
membri privat ¸i sau protejat ¸i, chiar dac ˘a nu fac parte din aceas ¸i instant ¸ ˘a.
12
Tehnologii utilizate PHP
Variabile predefinite
.Variabile globale:
$GLOBALS – pot fi accesate toate variabilele globale care sunt accesibile script-ului
PHP curent; acest vector este indexat chiar prin numele variabilelor globale.
$SERVER – cont ¸ine o serie de variabile ale c ˘aror valori sunt setate de server-ul web;
majoritatea valorilor variabilelor din acest vector depind de mediul de execut ¸ie al
script-ului curent.
’ PHP SELF ’ – cont ¸ine numele fis ¸ierului unde se execut ˘a scriptul curent, relativ la
r˘adacin ˘a (document root).
’ argv ’ – Un array al argumentului trimis c ˘atre script. C ˆınd scriptul ruleaz ˘aˆın linie de
comand ˘a, va da acces C-style la parametrii liniei de comanda. C ˆınd este accesat prin
metoda GET, acesta va cont ¸ine un sir de interogare.
’ argc ’ – Cont ¸ine un num ˘ar al parametrilor liniei de comand ˘a trimise c ˘atre script (dac ˘a
este rulat ˆın linie de comanda).
’ GATEWAY INTERFACE ’ – Returneaz ˘a versiunea CGI utilizat ˘a pe server.
’ SERVER NAME ’ – Numele server-ului de hosting unde se execut ˘a scriptul curent.
Dac˘a scriptul ruleaz ˘a pe un host virtual, aceasta va cont ¸ine valoarea definit ˘a pentru
acel host virtual.
’ SERVER SOFTWARE ’ – Returneaz ˘a un s ¸ir de identificare al server-ului dat ˆın
header ca r ˘aspuns la cerere.
’ SERVER PROTOCOL ’ – Numele s ¸i versiunea protocolului prin care este cerut ˘a
pagina.
’ REQUEST METHOD ’ – returneaz ˘a metoda utilizat ˘a pentru accesarea paginii.
’ REQUEST TIME’ – Valoarea timestamp dat ˘a la pornirea cererii.
’ QUERY STRING ’ – Sirul de interogare, dac ˘a este, de la pagina care a fost accesat ˘a.
’ HTTP ACCEPT ’ – Cont ¸inutul header-ului acceptat de la cererea curent ˘a, dac ˘a este
unul.
’ HTTP ACCEPT CHARSET ’ – Cont ¸ine setul de caractere acceptate s ¸i care este
trimis de header-ul cererii respective, dac ˘a exist ˘a.
’ HTTP ACCEPT ENCODING ’ – Cont ¸ine tipul de encodare trimis de cererea curent ˘a
prin header, dac ˘a exist ˘a.
’ HTTP ACCEPT LANGUAGE ’ – Cont ¸ine limbajul trimis de cererea curent ˘a prin
header, dac ˘a exista.
’ HTTP CONNECTION ’ – Cont ¸ine informat ¸ii despre conexiunea trimis ˘a de cererea
curent ˘a prin header, dac ˘a exist ˘a.
13
Tehnologii utilizate PHP
’ HTTP HOST ’ – Cont ¸ine informat ¸ii despre host, header-ul de la cererea curent ˘a, dac ˘a
exist ˘a.
’ HTTP REFERER ’ – Adresa paginii (dac ˘a este) de unde a venit userul ˆın pagina
curent ˘a. Aceasta este setat ˘a de c ˘atre browser.
’ HTTP USER AGENT ’ – Cont ¸ine semn ˘atura browser-ului trimis ˘a prin header la cer-
erea curent ˘a.
’ HTTPS ’ – Seteaz ˘a o valoare dac ˘a scriptul a fost cerut printr-un protocol securizat
HTTPS.
’ REMOTE ADDR ’ – Adresa de IP a userului care acceseaz ˘a pagina curent ˘a.
’ REMOTE HOST ’ – Numele hostului userului care vede pagina curent ˘a. Este in-
versul DNS-ului userului bazat pe REMOTE ADDR. Serverul web trebuie configurat
pentru a crea aceast ˘a variabila.
’ REMOTE PORT ’ – Portul prin care userul comunic ˘a cu serverul web.
’ SCRIPT FILENAME ’ – Calea absolut ˘a unde se execut ˘a scriptul curent.
’ SERVER ADMIN ’ – Valoarea dat ˘a de directiva SERVER ADMIN ˆın fis ¸ierul de
configurare al web serverului.
’ SERVER PORT ’ – Portul de pe server care este folosit pentru comunicare pe web.
’ SERVER SIGNATURE ’ – Cont ¸ine un s ¸ir care cuprinde versiunea serverului s ¸i nu-
mele hostului virtual .
’ SCRIPT NAME ’ – Cont ¸ine calea c ˘atre scriptul curent.
’ REQUEST URI ’ – URI care este dat pentru accesarea paginii curente.
.Variabile pentru trimiterea datelor:
$GET este o variabil ˘a, un array global. Se foloses ¸te pentru a trimite variabile cu val-
ori prin intermediul linkurilor.
$POST este de asemenea o variabil ˘a array global ˘a.Se foloses ¸te pentru a trimite vari-
abile cu valori prin intermediul formularelor.
.Variabilele HTTP cookies:
$COOKIE cont ¸ine valorile variabilelor care cont ¸in informat ¸ii referitoare la cookie-
urile p ˘astrate pe calculatorul utilizatorului care acceseaz ˘a pagina web.
$FILES cont ¸ine variabile primite de script prin intermediul ˆınc˘arc˘arilor de fis ¸iere prin
metoda post.
$ENV cont ¸ine variabile disponibile prin intermediul mediului ˆın care este executat.
.Variabilele pentru cereri:
$REQUEST cont ¸ine variabile disponibile prin intermediul oric ˘arui tip de mecanism
cu ajutorul c ˘aruia utilizatorul poate introduce date. Este de tip array s ¸i cont ¸ine valorile
variabilelor $ GET , $ POST s ¸i $ COOKIE
$SESSION cont ¸ine variabile care corespund sesiunii curente a script-ului, sub form ˘a
de array.
.Variabile de mesaje de eroare:
$php errormsg – este o variabil ˘a ce cont ¸ine ultimul mesaj generat de c ˘atre PHP. Aceast ˘a
variabil ˘a este folosit ˘aˆın scopul de a vedea ce eroare apare.
14
Tehnologii utilizate HTML
2.2 HTML
HyperText Markup Language (HTML) este un limbaj de marcare utilizat pentru crearea
paginilor web ce pot fi afis ¸ate ˆıntr-un browser (sau navigator). Scopul HTML este mai de-
grab˘a prezentarea informat ¸iilor paragrafe, fonturi, tabele s ¸.a.m.d. dec ˆat descrierea semanticii
documentului.
Specificat ¸iile HTML sunt dictate de World Wide Web Consortium (W3C).
HTML este o form ˘a de marcare orientat ˘a c˘atre prezentarea documentelor text pe o sin-
gur˘a pagin ˘a, utiliz ˆand un software de redare specializat, numit agent utilizator HTML, cel
mai bun exemplu de astfel de software fiind browserul web. HTML furnizeaz ˘a mijloacele
prin care cont ¸inutul unui document poate fi adnotat cu diverse tipuri de metadate s ¸i indicat ¸ii
de redare. Indicat ¸iile de redare pot varia de la decorat ¸iuni minore ale textului, cum ar fi speci-
ficarea faptului c ˘a un anumit cuv ˆant trebuie subliniat sau c ˘a o imagine trebuie introdus ˘a, pˆan˘a
la scripturi sofisticate, h ˘art ¸i de imagini s ¸i formulare. Metadatele pot include informat ¸ii despre
titlul s ¸i autorul documentului, informat ¸ii structurale despre cum este ˆımp˘art ¸it documentul ˆın
diferite segmente, paragrafe, liste, titluri etc. s ¸i informat ¸ii cruciale care permit ca documen-
tul s˘a poat ˘a fi legat de alte documente pentru a forma astfel hiperlink-uri (sau web-ul).
Paginile HTML sunt formate din etichete sau tag-uri s ¸i au extensia ”.html” sau ”.htm”.
ˆIn marea lor majoritate, aceste etichete sunt pereche, una de deschidere etichet ˘a>s ¸i alta de
ˆınchidere </etichet ˘a>, mai exist ˘a s ¸i cazuri ˆın care nu se ˆınchid, atunci se foloses ¸te <eticheta
/>. Navigatorul web interpreteaz ˘a aceste etichete afis ¸ ˆand rezultatul pe ecran. HTML-ul este
un limbaj care nu face deosebire ˆıntre majuscule s ¸i minuscule.
Pagina principal ˘a a unui domeniu este fis ¸ierul index.html respectiv index.htm. Aceast ˘a
pagin ˘a este setat ˘a a fi afis ¸at ˘a automat la vizitarea unui domeniu.
HTML este un format text proiectat pentru a putea fi citit s ¸i editat de oameni utiliz ˆand un
editor de text simplu. Totus ¸i scrierea s ¸i modificarea paginilor ˆın acest fel solicit ˘a cunos ¸tint ¸e
solide de HTML s ¸i este consumatoare de timp. Editoarele grafice cum ar fi Macromedia
Dreamweaver, Adobe GoLive permit ca paginile web sa fie tratate asem ˘an˘ator cu docume-
tele Word, dar cu observat ¸ia c ˘a aceste programe genereaz ˘a un cod HTML care este de multe
ori de proast ˘a calitate.
HTML se poate genera direct utiliz ˆand tehnologii de codare din partea serverului cum
ar fi PHP, JSP sau ASP. Multe aplicat ¸ii ca sistemele de gestionare a cont ¸inutului, wiki-uri s ¸i
forumuri web genereaz ˘a pagini HTML.
HTML este de asemenea utilizat ˆın e-mail. Majoritatea aplicat ¸iilor de e-mail folosesc
un editor HTML ˆıncorporat pentru compunerea e-mail-urilor s ¸i un motor de prezentare a e-
mail-urilor de acest tip. Folosirea e-mail-urilor HTML este un subiect controversat s ¸i multe
liste de mail le blocheaz ˘a intent ¸ionat.
Toate paginile HTML ˆıncep s ¸i se termin ˘a cu etichetele <html>s ¸i</html >.
ˆIn interiorul acestor etichete g ˘asim perechile <head >,</head >s ¸i<body >,</body >.
Head cont ¸ine titlul paginii ˆıntre etichetele <title>s ¸i</title>, descrieri de tip <meta >,
stiluri pentru formatarea textului, script-uri s ¸i leg ˘aturi c ˘atre fisiere externe (de exemplu script-
uri, fis ¸iere de tip CSS sau favicon).
Etichetele de tip meta cont ¸in cuvinte cheie, descrierea paginii, date despre autor, informat ¸ii
utile motoarelor de c ˘autare.
15
Tehnologii utilizate CSS
Figura 2.3: Exemplu de cod scris ˆın HTML 5
2.3 CSS
CSS (Cascading Style Sheets) este un standard pentru formatarea elementelor unui doc-
ument HTML. Stilurile se pot atas ¸a elementelor HTML prin intermediul unor fis ¸iere externe
sauˆın cadrul documentului, prin elementul <style >s ¸i/sau atributul style. CSS se poate uti-
liza s ¸i pentru formatarea elementelor XHTML, XML s ¸i SVGL.CSS3 reprezint ˘a un upgrade
ce aduce c ˆateva atribute noi s ¸i ajut ˘a la dezvoltarea noilor concepte ˆın webdesign.
Unele dintre cele mai importante segmente (module) noi ad ˘augate acestui standard pen-
tru formatarea elementelor HTML aduc un plus considerabil ˆın dezvoltarea activit ˘at ¸i webde-
sign.
Mai jos sunt prezente ˆın list ˘a, cele mai importante modulele ad ˘augate ˆın CSS3:
.Selectors
.Box Model
.Backgrounds and Borders
.Image Values and Replaced Content
.Text Effects
.2D/3D Transformations
.Animations
.Multiple Column Layout
.User Interface
Des ¸i au ap ˘arut unele deficiente de compatibilitate ˆıntre browsere, majoritatea propriet ˘at ¸ilor
CSS3 au fost implementate cu succes ˆın variantele browserelor noi.
Acum CSS3 ofer ˘a posibilitatea de a crea borduri cu colt ¸urile rotunjite far ˘a a folosi ele-
mente grafice de fundal as ¸a cum se folosea anterior acestui upgrade.
Proprietatea CSS3 border-radius defines ¸te prin valorile exprimate ˆIn pixeli c ˆat de ro-
tunjite vor fi colt ¸urile unui element HTML sau unei imagini. Fiecare colt ¸ poate avea o alta
valoare exprimat ˘aˆın pixeli diferit ˘a de un alt colt ¸ al aceluias ¸i element. Prin urmare putem
folosi pana la 4 valori diferite atribuite unui element HTML sau imagini.
16
Tehnologii utilizate Bootstrap
Figura 2.4: Exemplu de cod scris ˆın CSS 3
2.4 Bootstrap
Bootstrap este un framework foarte puternic s ¸i rapid pentru creearea contentului web.
A fost creeat de Mark Otto s ¸i Jacob Thornton. Bootstrap este o interfat ¸ ˘a front-end pen-
tru user spre deosebire de codul server-side ce apart ¸ine de back-end sau server.
Bootstrap se numea original Twitter Blueprint s ¸i a fost conceput ca un framework pentu
Twitter. ˆIn ianuarie 2012 Bootstrap 2 a fost anunt ¸at , iar acesta avea un grid de 12 coloane
s ¸i componente responsive modificandu-le pe cele existente. ˆIn august 2013 a fost anunat
bootstrap 3 care s-a apropriat de componentele responsive pentru telefoane s ¸i tablete. ˆIn
octombrie 2014 Mark Otto anunt ¸ ˘a Bootstrap 4 ˆIn progres iar versiunea alfa a acestuia este
valabil ˘a din 19 august 2015.
Bootstrap este compatibil cu ultimele versiuni de Browsere (Google Chrome, Firefox ,
Internet Explorer, Opera sau Safari). Cu venirea versiunii 2.0 Bootstrap suport ˘a responsive
web design , asta ˆınseamn ˘a c˘a layout-ul paginii web se ajusteaz ˘a dinamic. Versiunea 3.0 a
Bootstrap-ului se ocup ˘a mai ˆıntai cu responsive design-ul mobilelor.
Bootstrap este modular s ¸i const ˘a esent ¸ial ˆıntr-o serie de stylesheet-uri LESS care im-
plementeaz ˘a diferite componente ale kit-ului de unelte. Sistemul grid-ului s ¸i responsive
design-ul vine cu o l ˘at ¸ime de 1170 pixeli pe layout. Alternativ developerul poate utiliza un
layout cu l ˘at ¸ime variabil ˘a. Pentru ambele cazuri kit-ul de unelte are patru variat ¸ii ce poate fi
folosit pentru diferite rezolut ¸ii s ¸i tipuri de device-uri : telefoane mobile(landscape/portret) ,
tablete s ¸i PC-uri pe rezolut ¸ii mici sau mari. Fiecare variat ¸ie ajusteaz ˘a l˘at ¸imea coloanelor.
ˆIn plus la elementele HTML , Bootstrap cont ¸ine s ¸i alte elemente ale interfet ¸ei comune
cum ar fi : Grupuri de butoane sau butoane cu drop-down , liste de navigare , tab-uri orizon-
tale sau verticale , paginare , etichete , mesaje de avertizare , b ˘ari de progres etc.
17
Tehnologii utilizate MySQL
Bootstrap vine s ¸i cu o parte de componente Javascript sub forma plugin-urilor jQuery.
Acestea aduc elemente grafice adit ¸ionale : dialog box-uri , tooltip-uri , carusele , funct ¸ii
auto-complete pentru c ˆampurile de tip input , modale ,dropdown , scrollspy etc.
2.5 MySQL
MySQL este un sistem de gestiune a bazelor de date relat ¸ionale. Este cel mai popular
SGBD open-source la ora actual ˘a, fiind o component ˘a cheie a stivei LAMP (Linux, Apache,
MySQL, PHP).
Des ¸i este folosit foarte des ˆımpreun ˘a cu limbajul de programare PHP, cu MySQL se pot
construi aplicat ¸ii ˆın orice limbaj major.
MySQL este o component ˘a integrat a platformelor LAMP sau WAMP (Linux/Windows-
Apache-MySQL-PHP/Perl/Python). Popularitatea sa ca aplicat ¸ie web este str ˆans legat ˘a de
cea a PHP-ului care este adesea combinat cu MySQL s ¸i denumit Duo-ul Dinamic.
Pentru a administra bazele de date MySQL se poate folosi modul linie de comand ˘a sau,
prin desc ˘arcare de pe internet, o interfat ¸ ˘a grafic ˘a: MySQL Administrator s ¸i MySQL Query
Browser. Un alt instrument de management al acestor baze de date este aplicat ¸ia gratuit ˘a,
scris ˘aˆın PHP, phpMyAdmin.
Figura 2.5: Pagina PHPMyAdmin
18
Capitolul 3
LARAVEL
3.1 Introducere
Laravel este un framework web gratis s ¸i open-source al PHP-ului, creat de Taylor Otwell
cu scopul cre ˘arii aplicat ¸iilor web urm ˆand modelul arhitectural view-controller (MVC).
Acesta a fost creat ca o alternativ ˘a mai avansat ˘a al framework-ului Codelgniter deoarece
acesta nu prezint ˘a anumite caracteristici, cum ar fi funct ¸iile built-in pentru autentificarea uti-
lizatorului s ¸i autorizat ¸ie.
Laravel 1 includea suport built-in pentru autentificare, localizare, view-uri, sesiuni,
funt ¸ii de rutare, dar nu avea ceea ce ˆıl putea face un adev ˘arat framework MVC, suport pentru
controlere.
Laravel 2 a adus numeroase ˆımbun ˘at˘at ¸iri at ˆat din partea autorului c ˆat s ¸i din partea co-
munit ˘at ¸ii. Caracteristile noi atribuite au fost: suportul pentru control ˘are, ceea ce a f ˘acut ca
Laravel 2 s ˘a fie un framework MVC, suport pentru IoC s ¸i un sistem template numit Blade .
Ca un dezavantaj, suportul pentru packetele provenite din tert ¸ ˘a parte a fost ˆınl˘aturat.
Laravel 3 a venit cu un nou set de caracteristici, o interfat ¸ ˘a pentru linia de comand ˘a(CLI)
numit ˘aArtisan , mai mult suport pentru sistemele de gestiune ale bazelor de date, pentru
migrat ¸iile bazelor de date, ca o form ˘a de control pentru manipularea evenimentelor,precum
s ¸i un sistem de packaging numit Bundles .
Laravel 4, numit s ¸i Illuminati , a fost o complet ˘a rescriere a framework-ului, migr ˆand tot
layout-ul ˆın seturi separate de pachete distribuite prin Composer, care serves ¸te ca un manager
de pachete la nivelul aplicat ¸iei.
Laravel 5 a fost lansat ˆın februarie 2015 ca urmare a modific ˘arilor interne a versiunii 4.3
de Laravel. Noile caracteristici ˆın versiunea 5 includ suportul pentru programarea sarcinilor
executate periodic printr-un pachet numit Scheduler , un layer de abstractizare numit Flysys-
temcare permite stocarea la distant ¸ ˘a pentru a putea fi utilizate ˆın acelas ¸i mod ca s ¸i sistemele
de fis ¸iere locale, ˆımbun ˘at˘at ¸irea manipul ˘arii bunurilor prin pachetul Elixir .ˆIn acesta a mai
fost introdus s ¸i o nou ˘a structur ˘a, arborescent ˘a, pentru directoarele interne ale aplicat ¸iilor
dezvoltate.
Laravel 5.1, lansat ˆın iunie 2015, este prima lansare a Laravel care primes ¸te sprijin pe
termen lung (LTS), cu planific ˘ari pe o perioad ˘a de doi ani pentru bug-uri s ¸i trei ani pentru
19
LARAVEL Caracteristici
patch-uri de securitate. Acestea sunt planificate pentru a fi lansate la fiecare doi ani.
3.2 Caracteristici
Urm ˘atoarele caracteristici au servit ca s ¸i puncte cheie pentru proiectarea Laravelului:
Bundles, care furnizeaz ˘a un sistem de ambalare modular, cu caracteristici deja disponi-
bile pentru o ad ˘agare mai facil ˘a de aplicat ¸ii. ˆIncep ˆand cu Laravel 4, se introduce Composer
pentru a fi un manager pentru ad ˘augarea pachetelor PHP specifice Laravel.
O mapare relat ¸ional ˘a-obiect (ORM) elocvent ˘a este o implementare avansat ˘a a PHP-
ului, a modelului active record, oferind ˆın acelas ¸i timp, metodele interne de aplicare a con-
strˆangerilor asupra obiectelor bazei de date. Urm ˆand modelul de ˆınregistrare activ, acesta
prezint ˘a tabelele bazei de date ca s ¸i clase, cu instant ¸ele lor obiect legate de r ˆanduri de o sin-
gur˘a tabel ˘a.
Query builder, disponibil din Laravel 4, ofer ˘a o alternativ ˘a mai direct ˘a de acces la baza
de date cu Eloquent ORM. ˆIn loc s ˘a solicite interog ˘ari SQL s ˘a fie scrise direct, constructorul
de interogare Laravel ofer ˘a un set de clase s ¸i metode capabile de interog ˘ari de construct ¸ie ˆın
mod programatic. Acesta permite, de asemenea, select ¸ia cache-ului din rezultatele de intero-
gri executate.
Application logic este o parte integrat ˘a a aplict ¸iilor dezvoltate, puse ˆın aplicare, fie prin
utilizarea controlelor sau ca parte a declarat ¸iilor de rut ˘a.
Rutarea invers ˘a defines ¸te o relat ¸ie ˆıntre link-uri s ¸i rute, ceea ce face posibil s ˘a fie f ˘acute
modific ˘ari ulterioare la rutele care urmeaz ˘a s˘a fie propagate automat ˆın linkuri relevante. ˆIn
cazul ˆın care link-urile sunt create prin utilizarea numelor rutelor existente, identificatorii
corespunz ˘atori ai resurselor uniforme (URI) sunt create automat de c ˘atre Laravel.
Controalele restful ofer ˘a o modalitate optim ˘a de separare a logicii din spetele metodelor
care deservesc cererile HTTP GET s ¸i POST.
Clasa de auto- ˆınc˘arcare prevede ˆınc˘arcarea automat ˘a a claselor PHP, f ˘ar˘a a fi nevoie de
ˆıntret ¸inerea manual ˘a a c ˘ailor de incluziune. La cerere, se previne includerea componentelor
care nu sunt necesare, astfel ˆıncˆat numai componentele utilizate sunt ˆınc˘arcate.
Compozitorii de tip view servesc ca s ¸i unit ˘at ¸i customizate de cod logice, care pot fi ex-
ecutate atunci c ˆand este ˆınc˘arcat ˘a o imagine.
Engine-ul de template Blade combin ˘a una sau mai multe template-uri cu un model de
date pentru a produce views, f ˘acˆand acest lucru prin transpiling-ul template-urilor ˆın cache-ul
codului PHP pentru a ˆımbun ˘at˘at ¸ii performant ¸a. Acesta ofer ˘a, de asemenea, un set de struc-
turi de control proprii, cum ar fi declarat ¸ii s ¸i bucle condit ¸ionate, care sunt mapate pe plan
intern. Serviciile Laravel pot fi apelate de template-uri Blade, iar motorul de templating ˆın
sine poate fi extins cu directive personalizate.
Migrat ¸iile furnizeaz ˘a un sistem de control al versiunii pentru schemele de baze de date,
ceea ce face posibil s ˘a se asocieze modific ˘arile codebase ale aplicat ¸iei s ¸i modific ˘arile nece-
sare ˆın structura bazei de date. Ca rezultat, aceast ˘a caracteristic ˘a simplific ˘a implementarea
s ¸i actualizarea aplicat ¸iilor bazate pe Laravel.
Seeding-ul pentru bazele de date ofer ˘a o modalitate de a popula tabelele bazei de date
cu date implicit selectate care pot fi utilizare pentru testarea aplicat ¸iei sau s ˘a fie efectuate ca
20
LARAVEL Instalare s ¸i configurare
parte a configur ˘arii cererii init ¸iale.
Unitatea de testare este furnizat ˘a ca parte integrat ˘a Laravel, care cont ¸ine ˆın sine teste
unitare care detecteaz ˘a s ¸i previn regresiile ˆın framework. Testele pot fi efectuate prin linia de
comand ˘a folosind comanda artisan.
Paginarea automat ˘a pentru a simplifica sarcina de punere ˆın aplicare a paginat ¸iei, ˆınlocuind
punerea ˆın aplicare manual ˘a cu metode obis ¸nuite cu abord ˘ari automatizate integrate.
O caracteristic ˘a este s ¸i formularul de solicitare, care serves ¸te ca baz ˘a pentru validarea
formularului de intrare c ˘atre ”ascult ˘atorii” evenimentului cu caracter obligatoriu pe plan in-
tern, av ˆand ca rezultat invoc ˘ari automate ale metodelor de validare a formului s ¸i generarea
formului actual.
3.3 Instalare s ¸i configurare
Laravel utilizeaz ˘aComposer pentru gestiunea dependent ¸elor sale.
Composer este un manager de pachete la nivel de aplicat ¸ie pentru PHP, care ofer ˘a un
format standard pentru gestiunea dependent ¸elor PHP-ului s ¸i bibliotecile necesare. Composer
ruleaz ˘a prin linia de comand ˘a s ¸i instaleaz ˘a dependent ¸ele (de exemplu, biblioteci) pentru o
aplicat ¸ie. De asemenea, permite utilizatorilor s ˘a instaleze aplicat ¸ii PHP care sunt disponibile
pe ”Packagist”, care este depozitul s ˘au principal care cont ¸ine pachetele disponibile. Acesta
prevede capabilit ˘at ¸i Autoload pentru biblioteci, care specific ˘a informat ¸ii autoload pentru a
us ¸ura utilizarea de cod tert ¸ ˘a parte.
Pentru a instala Composer, se poate downloada setup-ul acestuia de pe site-ul oficial
sau din linia de comand ˘a prin comenzile:
php -r "copy(’https://getcomposer.org/installer’,
’composer-setup.php’);"
php -r "if (hash_file(’SHA384’, ’composer-setup.php’) ===
’bf16ac69bd8b807bc6e4499b28968ee87456e29a3894767b60c2d4dafa3d10
d045ffef2aeb2e78827fa5f024fbe93ca2’)
{ echo ’Installer verified’; } else { echo ’Installer corrupt’;
unlink(’composer-setup.php’); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink(’composer-setup.php’);"
21
LARAVEL Instalare s ¸i configurare
Figura 3.1: Instalare Composer ˆın linia de comand ˘a
Dup˘a ce acesta s-a instalat, putem efectua instalarea Laravel-ului. Prin linia de comand ˘a
se va downloada Laravel folosind Composer:
composer global require "laravel/installer"
Figura 3.2: Instalare Laravel ˆın linia de comand ˘a
Dup˘a ce acesta s-a instalat putem crea o aplicat ¸ie foarte us ¸or folosind comanda: laravel
new, apoi urmat de tipul aplicat ¸iei: application, blog, etc.
22
LARAVEL Instalare s ¸i configurare
Figura 3.3: Crearea unei noi aplicat ¸ii
Figura 3.4: Finalizarea aplicat ¸iei
Aplicat ¸ia creat ˘a va ar ˘ata astfel:
23
LARAVEL Instalare s ¸i configurare
Figura 3.5: Aplicat ¸ia nou ˘a.
Structura folderului creat:
Figura 3.6: Folderul nou creat
24
LARAVEL Structura unei aplicat ¸ii
Toate fis ¸ierele de configurare pentru cadrul Laravel sunt stocate ˆın directorul config .
Fiecare opt ¸iune este documentat ˘a. De asemenea, poate fi necesar ˘a configurarea s ¸i anumitor
permisiuni. Directoarele storage s ¸ibootstrap/cache ar trebuii declarate writable, deoarece
serverul sau chiar aplicat ¸ia este posibil s ˘a nu ruleze ˆın caz contrar.
Urm ˘atorul lucru este setarea cheii de aplicat ¸ie. Aceasta const ˘aˆıntr-un s ¸ir de caractere
aleatoare. De obicei, acest s ¸ir ar trebui s ˘a fie de 32 de caractere aleatoare. Cheia poate fi
setat ˘aˆın fis ¸ierul de mediu .env .ˆIn cazul ˆın care cheia de aplicat ¸ie nu este, sesiunile de uti-
lizator s ¸i alte date criptate nu vor fi sigure.
3.4 Structura unei aplicat ¸ii
Structura implicit ˘a a unei aplicat ¸ii Laravel este menit ˘a s˘a ofere un punct de plecare
excelent, indiferent de grandoarea proiectului.
Folderul Root al unei aplicat ¸ii proasp ˘at create cont ¸ine:
Directorul appcont ¸ine codul de baz ˘a al aplicat ¸iei.
Folderul bootstrap cont ¸ine c ˆateva fis ¸iere pe care framework-ul Bootstrap le utilizeaz ˘a
pentru a configura autoloading-ul, precum s ¸i un director, cache, pentru fis ¸ierele generale ale
framework-ului pentru optimizarea performant ¸iei.
Directorul config cont ¸ine toate fis ¸ierele de configurare ale aplicat ¸iei.
Folderul database cont ¸ine migr ˘arile s ¸i seed-urile. Aici pot fi stocate s ¸i bazele de date.
Controllerul frontal s ¸i imaginile sau script-urile JavaScript sau CSS se g ˘asesc ˆın folderul
public .
Directorul resources cont ¸ine view-uri s ¸i fis ¸iere de localizare.
Storage cont ¸ine fis ¸ierele compilate ale template-ului Blade, fis ¸iere ale sesiunii, cache-
uri de fis ¸iere. Acest folder este ˆımp˘art ¸itˆın directoarele app, framework s ¸ilogs. Directorul
app poate fi utilizat pentru a stoca orice fis ¸iere utilizate de c ˘atre aplicat ¸ie. Folderul framework
este utilizat pentru a stoca fis ¸ierele generate de c ˘atre framework s ¸i cache, iar directorul logs
cont ¸ine log-urile fis ¸ierelor din aplicat ¸ie.
Folderul tests cont ¸ine test ˘arile automate.
Iar folderul vendor cont ¸ine dependent ¸ele Composer.
3.5 MVC
Model-View-Controller este un model arhitectural utilizat ˆın ingineria software pentru
implementarea interfet ¸elor. Acesta ˆımparte o aplicat ¸ie software ˆın trei p ˘art ¸i interconectate,
astfel ˆıncˆat s˘a separe reprezent ˘arile interne de informat ¸ii de modurile ˆın care informat ¸iile
sunt prezentate sau acceptate de c ˘atre utilizator.
25
LARAVEL MVC
Componente
Componenta central ˘a a MVC, modelul, surprinde comportamentul cererii ˆın ceea ce
prives ¸te domeniul s ˘au problem ˘a, independent fat ¸ ˘a de interfat ¸a cu utilizatorul. Modelul ges-
tioneaz ˘aˆın mod direct baza de date, logica s ¸i regulile de aplicare.
Un view poate fi orice reprezentare de ies ¸ire a informat ¸iilor, cum ar fi o diagram ˘a. Sunt
posibile mai multe view-uri ale aceleas ¸i informat ¸ii.
Cea de a treia parte, controllerul, accept ˘a input-ul s ¸i ˆıl convertes ¸te ˆın comenzi pentru
model sau view.
Interact ¸iuni
ˆIn plus fat ¸ ˘a de divizarea aplicat ¸iei ˆın trei tipuri de componente, designul model-view-
controller defines ¸te s ¸i interact ¸iunile dintre ele.
Modelul stocheaz ˘a datele care vor fi preluate ˆın funct ¸ie de comenzile de la controller s ¸i
afis ¸ate ˆın view.
Un view genereaz ˘a un nou output pentru utilizator pe baza modific ˘arilor din model.
Controller-ul poate trimite comenzi pentru model pentru a actualiza starea domeniului.
Acesta trimite, de asemenea, comenzi s ¸i la view pentru a schimba prezentarea modelului prin
view.
Figura 3.7: Model-View-Controller
26
LARAVEL HTTP Routing
3.6 HTTP Routing
HTTP (Hypertext Transfer Protocol) este metoda cea mai des utilizat ˘a pentru accesarea
infomat ¸iilor ˆın internet, care sunt p ˘astrate pe servere World Wide Web (WWW). Protocolul
HTTP este un protocol de tip text, fiind protocolul ”implicit” al WWW. Un URL (Localizator
Uniform de Resurse) nu cont ¸ine partea de protocol, aceasta se consider ˘a ca fiind http. HTTP
presupune c ˘a pe calculatorul destinat ¸ie ruleaz ˘a un program care ˆınt ¸elege protocolul. Fis ¸ierul
trimis la destinat ¸ie poate fi un document HTML, un program executabil pe server-ul respec-
tiv sau chiar un editor de text. Dup ˘a clasificarea dup ˘a modelul de referint ¸ ˘a OSI, protocolul
HTTP este un protocol de nivel de aplicat ¸ie.
Deseori utilizatorul dores ¸te s ˘a transmit ˘a informat ¸ii speciale la website. Pentru asta, sunt
urm˘atoarele metode disponibile: GET – cea mai folosit ˘a metod ˘a, fiind utilizat ˘a atunci c ˆand
serverului i se cere o resurs ˘a,HEAD – se comport ˘a exact ca metoda GET, dar serverul re-
turneaz ˘a doar antetul resursei, ceea ce permite clientului s ˘a inspecteze antetul resursei, f ˘ar˘a a
fi nevoit s ˘a obt ¸in ˘a s ¸i corpul resursei, PUT – metoda este folosit ˘a pentru a depune documente
pe server, fiind inversul metodei GET, POST – a fost proiectat ˘a pentru a trimite date de intrare
c˘atre server, DELETE – este opusul metodei PUT, TRACE – metod ˘a folosit ˘a pentru diagnos-
ticare, put ˆand da mai multe informat ¸ii despre traseul urmat de leg ˘atura HTTP, OPTIONS –
este folosit ˘a pentru identificarea capacit ˘at ¸ilor serverului WEB, ˆınainte de a face o cerere, s ¸i
CONNECT – este o metod ˘a folosit ˘aˆın general de serverele intermediare.
HTTPS (Secure Hyper Text Transfer Protocol) reprezint ˘a protocolul HTTP ˆıncapsulat
ˆıntr-un flux SSL/TLS (Secure Sockets Layer/ Transport Layer Security) care cripteaz ˘a datele
transmise de la un browser web la un server web, cu scopul de a se oferi o identificare crip-
tat˘a s ¸i sigur ˘a la server. Conexiunile HTTPS sunt folosite ˆın mare parte pentru efectuarea de
operat ¸iuni de plat ˘a s ¸i pentru operat ¸iunile ”sensibile” din sistemele de informat ¸ii corporative.
Rutarea este procesul de selectare a celor mai bune c ˘aiˆıntr-o ret ¸ea. Aceasta este realizat ˘a
pentru mai multe tipuri de ret ¸ele, inclusiv ret ¸eauna de telefonie, ret ¸elele de date electronice
s ¸i ret ¸elele de transport.
Fiecare act ¸iune a unui controller este asociat cu un punct final al URL-ului astfel ˆıncˆat
Laravel s ˘a s ¸tie cum s ˘a react ¸ioneze la o anumit ˘a cerere. De exemplu, o act ¸iune a controlleru-
lui de index Welcome este asociat ˆın mod implicit cu r ˘ad˘acina, sau URL-ul de origine.
Routele aplicat ¸iei vor fi definite ˆın fis ¸ierul routes.php din directorul app/Http/routes.php ,
care este apoi ˆınc˘arcat de c ˘atre clasa App/Providers/RouteServiceProvider .
Cele mai simple rout ˘ari pot fi formate doar din URI (Uniform Resource Identifier) s ¸i un
Closer:
Route::get(’/’, function () {
return ’Hello World’;
});
Route::post(’foo/bar’, function () {
return ’Hello World’;
});
Route::put(’foo/bar’, function () {
//
27
LARAVEL Protect ¸ia CSRF
});
Route::delete(’foo/bar’, function () {
//
});
ˆInregistrarea unei route pentru multiple verbe
Exist ˘a posibilitatea nevoii ˆınregistr ˘arii unei route care s ˘a r˘aspund ˘a mai multor verbe
HTTP. Acest lucru este posibil folosind metoda match :
Route::match([’get’, ’post’], ’/’, function () {
return ’Hello World’;
});
Sau, se poate ˆınregistra un traseu care s ˘a r˘aspund ˘a la toate verbele HTTP folosind orice
metod ˘a:
Route::any(’foo’, function () {
return ’Hello World’;
});
Parametrii route
Uneori va fi nevoie de capturarea unor segmente URI ˆın cadrul rutei. De exemplu, ar
fi necesar ˘a captarea ID-ului de utilizator de la adresa URL. Se poate face asta prin definirea
parametrilor de rut ˘a:
Route::get(’user/{id}’, function ($id) {
return ’User ’.$id;
});
3.7 Protect ¸ia CSRF
Laravel are o protect ¸ie eficient ˘a a aplicat ¸iilor ˆımpotriva cererilor false cross-site (CSRF).
Cererile false cross-site sunt o exploatare malit ¸ioas ˘a, prin care se efectueaz ˘a comenzi neau-
torizate ˆın numele utilizatorului autentificat.
Acesta genereaz ˘a automat un ”jeton” CSRF pentru fiecare sesiune de utilizator activ
28
LARAVEL HTTP Middleware
gestionat de aplicat ¸ie. Acest simbol este utilizat pentru a verifica dac ˘a utilizatorul autentifi-
cat este cel care face de fapt solicitarea la aplicat ¸ie. Pentru a genera un c ˆamp de introducere
ascuns token care cont ¸ine token-ul CSRF.
<?php echo csrf_field(); ?>
Funct ¸ia ajut ˘atoare csrffield genereaz ˘a:
<input type="hidden" name="_token" value="<?php echo csrf_token();
?>">
Iar pentru template-ul Blade:
{!! csrf_field() !!}
Token-ul CSRF nu trebuie verificat manual prin cereri POST, PUT sau DELETE. Middleware-
ul HTTP, VerifyCsrfToken verific ˘a dac ˘a token-ul din inputul request-ului se potrives ¸te cu
token-ul din sesiune.
3.8 HTTP Middleware
HTTP Middleware furnizeaz ˘a un mecanism convenabil pentru cererile de filtrare HTTP
care intr ˘aˆın aplicat ¸ie. De exemplu, Laravel include un middleware care verific ˘a dac ˘a utiliza-
torul aplicat ¸iei este autentificat. ˆIn cazul ˆın care utilizatorul nu este autentificat, middleware
va redirect ¸iona utilizatorul la conectare. Cu toate acestea, ˆın cazul ˆın care utilizatorul este
autentificat, middleware va permite solicitarea de a proceda ˆın continuare ˆın aplicat ¸ie.
Middleware suplimentare pot fi scrise pentru a efectua o varietate de sarcini ˆın afar ˘a
de autentificare. A CORS middleware ar putea fi responsabil pentru ad ˘augarea anteturilor
corespunz ˘atoare pentru toate r ˘aspunsurile care p ˘ar˘asesc aplicat ¸ia.
Exist ˘a mai multe middleware incluse ˆın cadrul Laravel, inclusiv middleware pentru
ˆıntret ¸inere, autentificare, protect ¸ie CSRF, s ¸i multe altele. Toate aceste middleware sunt lo-
calizate ˆın directorul app/HTTP/Middleware .
Pentru a creare, se va folosi comanda ˆın Command Prompt : make:middleware :
php artisan make:middleware NewMiddleware
29
LARAVEL HTTP Controllers
3.9 HTTP Controllers
Pentru a facilita solicit ˘arile de manipulare logice ale utilizatorului, se opteaz ˘a folosirea
claselor Controller, ˆın loc de un singur fis ¸ier routes.php . Controalerele pot fi legate prin grup
de cererile HTTP de logic ˘a dintr-o clas ˘a. Controalele sunt stocate ˆın directorul app/Http/-
Controllers .
Exemplu de Controller:
<?php
namespace App\Http\Controllers;
use App\User;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
*Show the profile for the given user.
*
*@param int $id
*@return Response
*/
public function showProfile($id)
{
return view(’user.profile’, [’user’ => User::findOrFail($id)]);}
}
Putem routa act ¸iunea controllerului:
Route::get(’user/{id}’, ’UserController@showProfile’);
3.10 HTTP Requests
Pentru a obt ¸ine o instant ¸ ˘a a cererii HTTP curente prin dependency injection, trebuie apelat ˘a
clasa Illuminate/ Http/Request ˆın metoda sau constructorul controllerului.
Instant ¸a Illuminate/Http/Request ofer˘a o varietate de metode pentru examinarea cererii
HTTP pentru aplicat ¸ie.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
30
LARAVEL HTTP Responses
class UserController extends Controller
{
/**
*Store a new user.
*
*@param Request $request
*@return Response
*/
public function store(Request $request)
{
$name = $request->input(’name’);
//
}
}
3.11 HTTP Responses
Toate routele s ¸i controllerele ar trebui s ˘a returneze un fel de r ˘aspuns care urmeaz ˘a s˘a
fie trimis ˆınapoi la browser-ul utilizatorului. Laravel ofer ˘a mai multe moduri diferite pentru
r˘aspuns. Cel mai basic r ˘aspuns este ˆıntoarcerea unui s ¸ir de caractere dintr-un controller sau
dintr-o rout ˘a:
Route::get(’/’, function () {
return ’Hello World’;
});
S ¸irul dat va fi convertit automat ˆıntr-un r ˘aspuns HTTP de c ˘atre framework.
Cu toate acestea, pentru cele mai multe rute s ¸i act ¸iuni ale controllerului, se va ˆıntoarce
o instant ¸ ˘a sau un view. ˆIntoarcerea unei instant ¸e drept r ˘aspuns permite completarea s ¸i per-
sonalizarea r ˘aspunsului HTTP ˆın antete s ¸i statusul codului.
3.12 Views
View-urile cont ¸in reprezent ˘arile grafice, interfet ¸ele grafice ce interact ¸ioneaz ˘a cu utilizatorul.
Acestea sunt stocate ˆın directorul resources/views .
Crearea unui view simplu:
<!– View stored in resources/views/greeting.php –>
<html>
<body>
<h1>Hello, <?php echo $name; ?></h1>
31
LARAVEL Blade Template
</body>
</html>
3.13 Blade Template
Blade este un template puternic s ¸i simplu furnizat de c ˘atre Laravel. Spre deosebire de
alte template-uri PHP, Blade nu restrict ¸ioneaz ˘a utilizarea codului PHP simplu ˆın view-uri.
Toate view-urile din Blade sunt compilate ˆın PHP simplu s ¸i memorat ˘aˆın Cache p ˆan˘a cˆand
acestea sunt modificate, ceea ce ˆınseam ˘a c˘a Blade nu adaug ˘a nimic aplicat ¸iei. Fis ¸ierele Blade
View utilizeaz ˘a extensia .blade.php s ¸i sunt stocate ˆın directorul de resurse resources/view .
Dou˘a dintre pricipalele beneficii ˆın utilizare sunt mos ¸tenirea template-ului s ¸i sect ¸ionarea.
<!– Stored in resources/views/layouts/master.blade.php –>
<html>
<head>
<title>App Name – @yield(’title’)</title>
</head>
<body>
@section(’sidebar’)
This is the master sidebar.
@show
<div class="container">
@yield(’content’)
</div>
< /body>
</html>
3.14 Artisan
Artisan este numele interfet ¸ei liniei de comand ˘a inclus ˘aˆın Laravel. Acesta ofer ˘a un
num˘ar de comenzi utile pentru utilizare ˆın timpul dezvolt ˘arii aplicat ¸iei. Vizualizarea tuturor
comenzilor se face prin comanda ˆın Command Prompt:
php artisan list
Iar pentru ajutor ˆın privint ¸a oric ˘arei comenzi:
php artisan help migrate
32
LARAVEL Eloquent
3.15 Eloquent
Eloquent ORM este inclus ˆın Laravel s ¸i faciliteaz ˘a lucrul cu bazele de date. Fiec ˘arui
tabel al bazei de date ˆıi corespunde un ”Model” , care este folosit pentru a interact ¸iona cu
tabelul. Aceste modele permit interog ˘arile pentru datele din tabele, precum s ¸i introducerea
noilor ˆınregistr ˘ariˆın tabel.
Modelele sunt stocate ˆın directorul app. Pentru a crea un model, se va folosi comanda
Artisan:
php artisan make:model User
Iar pentru a genera o migrat ¸ie, dup ˘a generarea modelului: –migration sau opt ¸iunea -m:
php artisan make:model User –migration
php artisan make:model User -m
Eloquent v-a seta ca s ¸i cheie primar ˘a a fiec ˘arui tabel, coloana denumit ˘aid. Pentru a seta
alt˘a cheie primar ˘a se va folosi $primaryKey.
Definirea relat ¸iilor ˆıntre bazele de date
Relat ¸iile sunt definite ca s ¸i funct ¸ii ˆın clasele modelelor. La fel ca s ¸i modelele Eloquent,
relat ¸iile servesc ca s ¸i query builders, definind relat ¸iile ca funct ¸ii care ofer ˘a metode puternice
deˆınl˘ant ¸uire s ¸i de interogare.
.One To One
$phone = User::find(2)->phone;
.One To Many
$comments = App\Post::find(1)->comments;
foreach ($comments as $comment) {
//
}
.Many to Many
$user = App\User::find(1);
foreach ($user->roles as $role) {
//
}
33
LARAVEL Baza de date
3.16 Baza de date
Laravel faciliteaz ˘a conectarea cu bazele de date s ¸i interog ˘ari, dintr-o varietate de baze de
date, folosind fie SQL brut, fie constructor fluent de interog ˘ari, fie Eloquent ORM. ˆIn prezent,
Laravel ofer ˘a suport pentru patru sisteme de baze de date: MySQL, Postgres, SQLite s ¸i SQL
Server.
Configurarea bazei de date se afl ˘aˆın directorul config/database.php . Tot ˆın acest fis ¸ier
se definesc s ¸i conexiunile la bazele de date.
Query builder-ul bazei de date ofer ˘a o interfat ¸ ˘a fluent ˘a s ¸i convenabil ˘a pentru crearea
s ¸i difuzarea query-urilor bazei de date. Acesta poate fi utilizat pentru a efectua majoritatea
operat ¸iilor.
Migrat ¸iile sunt versiunea de control ale bazelor de date, care permit echipei s ˘a modifice
sau s ˘a distribuie cu us ¸urint ¸ ˘a schema bazei de date a aplicat ¸iei. Acestea sunt, de obicei aso-
ciate cu schema constructor Laravel pentru a se facilita construct ¸ia schemei bazei de date a
aplicat ¸iei.
Generarea unei migr ˘ari se face folosind comanda:
php artisan make:migration create_users_table
Noua migrare va fi plasat ˘aˆın directorul databasa/migrations . Fiecare denumire a migr ˘arilor
cont ¸in c ˆate un timestamp care permite Laravel s ˘a determine ordinea migr ˘arilor.
Pentru a rula o migrare, se va folosi comanda:
php artisan migrate
Pentru a face un roll back asupra unei migr ˘ari:
php artisan migrate:rollback
Pentru a face roll back asupra tuturor migr ˘arilor din aplicat ¸ie:
php artisan migrate:reset
Laravel include o metod ˘a simpl ˘a de a face seed unei baze de date cu datele de testare
folosite de clasele de seed. Toate clasele de seed se afl ˘aˆın folderul Database/seeds . Clasele
de seed pot avea orice nume. ˆIn mod implicit este definit ˘a o clas ˘a DatabaseSeeder. Din
aceast ˘a clas ˘a, se poate utiliza metoda de apelare pentru a rula alte clase seed, permit ¸ ˆand con-
trolul asupra ordinii.
Pentru a crea un seed se va folosi comanda Artisan:
34
LARAVEL Baza de date
php artisan make:seeder UserTableSeeder
O clas ˘a seeder cont ¸ine o singur ˘a metod ˘a, dat ˘a de default, run. Metoda este apelat ˘a cˆand
comanda Artisan se execut ˘a.
35
Capitolul 4
Dezvoltarea aplicat ¸iei software
4.1 Documentul de cerint ¸e
Analiza cerint ¸elor
Analiza cerint ¸elor este o activitate de baz ˘aˆın procesul de dezvoltare a unui sistem soft-
ware. ˆIn timpul acestei activit ˘at ¸i este creat documentul de cerint ¸e al sistemului software ce
va fi analizat.
Documentul de cerint ¸e
Documentul de cerint ¸e este o descriere a funct ¸iilor s ¸i propriet ˘at ¸ilor sistemului, ˆın gen-
eral a exigent ¸elor fat ¸ ˘a de sistem, as ¸a cum este v ˘azut acesta de c ˘atre tot ¸i cei interesat ¸i ˆın
funct ¸ionarea lui. Documentul cerint ¸elor sistemului cont ¸ine urm ˘atoarele elemente: Descriere,
Actori software, Cerint ¸e funct ¸ionale s ¸i Cerint ¸e nefunct ¸ionale.
Descriere
Realizeaz ˘a gestiunea program ˘arilor s ¸i comunicarea dintre doctor s ¸i pacient dintr-o clinic ˘a
medical ˘a.
Actori software
Doctor, Pacient.
36
Dezvoltarea aplicat ¸iei software Documentul de cerint ¸e
Cerint ¸e funct ¸ionale
F1.ˆInregistrare.
F1.1. Permite ˆınregistrarea unui utilizator.
F1.2. Dac ˘a utilizatorul nu dores ¸te s ˘a seˆınregistrez ˘a, se opres ¸te fluxul.
F1.3. Utilizatorul se poate ˆınregistra fie ca doctor, fie ca s ¸i pacient.
F1.4. Acesta completeaz ˘a adresa de email, nume s ¸i o parol ˘a.
F1.5. Dac ˘a una dintre aceste informat ¸ii nu sunt corecte, se afis ¸eaz ˘a un mesaj de eroare.
F1.6. Se memoreaz ˘a numele de utilizator s ¸i parola.
F1.7. Dac ˘a este ˆınregistrat un doctor, acesta primes ¸te drepturi de admin.
F2. Solicit ˘aProgramare.
F2.1. Pacientul solicit ˘a o programare.
F2.2. Se selecteaz ˘a specializarea dorit ˘a.
F2.3. Se selecteaz ˘a doctorul dorit.
F2.4. Se selecteaz ˘a data dorit ˘a.
F2.5. Se selecteaz ˘a ora dorit ˘a.
F2.6. Alege opt ¸iunea pentru care a venit.
F3. R ˘aspunsProgramare.
F3.1. Doctorul vede program ˘arile.
F3.2. Doctorul accept ˘a programare.
F3.3 Doctorul respinge programarea.
F4. CereSfat.
F4.1. Pacientul are o problem ˘a.
F4.2. Acesta trimite mesaj unui doctor.
F4.3. As ¸teapt ˘a r˘aspuns.
F5. Ofer ˘aSfat.
F5.1. Doctorul vede mesajul primit.
F5.2. Acesta r ˘aspunde la mesaj.
Cerint ¸e nefunct ¸ionale
CN1. Sistemul trebuie s ˘a foloseasc ˘a fis ¸iere pentru gestiunea datelor persistente.
CN2. Pacientul/Doctorul nu trebuie s ˘a urmeze un instructaj pentru a folosi aplicat ¸ia,
este deajuns s ˘a urm ˘areasc ˘a manualul utilizatorului.
CN3. Aplicat ¸ia foloses ¸te interfet ¸e grafice.
CN4. Aplicat ¸ia trebuie s ˘a ruleze pe orice sistem de operare Windows.
CN5. Trebuie s ˘a verifice datele introduse de c ˘atre utilizator.
37
Dezvoltarea aplicat ¸iei software Descrierea cazurilor de utilizare
4.2 Descrierea cazurilor de utilizare
Modelul funct ¸ional
Modelul funct ¸ional cont ¸ine descrierea cazurilor de utilizare s ¸i diagrama cazurilor de
utilizare.
Cazul de utilizare: ˆInregistrare
Nume: ˆInregistrare
Descriere: Descrie comportamentul sistemului s ¸i interact ¸iunea acestuia cu un potent ¸ial
Doctor/Pacient.
Actori: Doctor, Pacient.
Eveniment declans ¸ator: Utilizatorul cere crearea unui cont.
Precondit ¸ii: Sistemul trebuie s ˘a funct ¸ioneze.
Postcondit ¸ii: Utilizatorul s-a ˆınregistrat fie ca s ¸i Doctor, fie ca s ¸i Pacient.
Referint ¸e ˆıncrucis ¸ate: F1.1-F1.7.
Flux principal:
Doctor/Pacient Sistem
1.Cere crearea unui utilizator nou 2.Cere adresa de email, nume, parol ˘a s ¸i tipul contuli
3.Introduce s ¸i trimite r ˘aspunsul. 4.Verific ˘a r˘aspunsul primit [A1]
5. Creaz ˘a numele de utilizator s ¸i ˆıi asociaz ˘a un ID unic
6.Afis ¸eaz ˘a numele utilizatorului s ¸i parola
7. Memoreaz ˘a numele de utilizator s ¸i parola
Tabelul 4.1: Fluxul principal al cazului de utilizare: ˆInregistrare
Flux alternativ:
A1. C ˆand utilizatorul completeaz ˘a gres ¸it datele sau part ¸ial.
1.Sistemul afis ¸eaz ˘a un mesaj de eroare.
2.Fluxul continu ˘a cu pasul 3 din Fluxul Principal.
Cazul de utilizare: Solicit ˘aProgramare
Nume: Solicit ˘aProgramare
Descriere: Descrie comportamentul sistemului s ¸i interact ¸iunea acestuia cu un Pacient.
38
Dezvoltarea aplicat ¸iei software Descrierea cazurilor de utilizare
Actor: Pacient.
Eveniment declans ¸ator: Pacientul solicit ˘a o programare.
Precondit ¸ii: Pacientul trebuie s ˘a aib ˘a cont.
Postcondit ¸ii: Sistemul a memorat programarea f ˘acut˘a de c ˘atre Pacient.
Referint ¸e ˆıncrucis ¸ate: F2.1-F2.6.
Flux principal:
Pacient Sistem
1.Cere o nou ˘a programare. 2.Cere specializarea dorit ˘a [A1]
3.Selecteaz ˘a specializarea. 4.Cere doctorul dorit [A2]
5.Selecteaz ˘a doctorul. 6. Cere data dorit ˘a [A3]
7.Introduce data dorit ˘a. 8. Cere ora dorit ˘a [A4].
9.Introduce ora . 10.Alege opt ¸iunea pentru care a venit.
11.Introduce s ¸i trimite r ˘aspunsul. 12.Trimite cerere.
13.Memoreaz ˘a cererea.
Tabelul 4.2: Fluxul principal al cazului de utilizare: Solicit ˘aProgramare
Flux alternativ:
A1. C ˆand Pacientul nu g ˘ases ¸te specializarea dorit ˘a.
1.Pacientul renunt ¸ ˘a la programare.
2.Fluxul principal se ˆıncheie.
A2.C ˆand Pacientul nu g ˘ases ¸te doctorul dorit.
1.Pacientul renunt ¸ ˘a la programare.
2.Fluxul principal se ˆıncheie.
A3.Pacientul nu are data disponibil ˘a.
1.Pacientul alege alt ˘a dat ˘a.
2.Fluxul continu ˘a cu pasul 6 din Fluxul Principal.
A4. Ora nu este disponibil ˘a.
39
Dezvoltarea aplicat ¸iei software Descrierea cazurilor de utilizare
1.Pacientul alege o or ˘a diferit ˘a.
2.Fluxul continu ˘a cu pasul 8 din Fluxul Principal.
Cazul de utilizare: R ˘aspunsProgramare
Nume: R˘aspunsProgramare
Descriere: Descrie comportamentul sistemului s ¸i interact ¸iunea acestuia cu un Doctor.
Actor: Doctor.
Eveniment declans ¸ator: Pacientul a cerut o programare.
Precondit ¸ii: Docorul a creat un cont.
Postcondit ¸ii: Sistemul a memorat r ˘aspunsul doctorului.
Referint ¸e ˆıncrucis ¸ate: F3.1-F3.3.
Flux principal:
Doctor Sistem
1.Cere afis ¸area program ˘arilor 2.Afis ¸eaz ˘a program ˘arile cerute de c ˘atre pacient ¸i.
3.Vizualizea ˘a program ˘arile.
4.Aprob ˘a programarea 5.Memoreaz ˘a aprobarea.
6.Respinge programarea 7. Memoreaz ˘a respingerea.
Tabelul 4.3: Fluxul principal al cazului de utilizare: R ˘aspunsProgramare
Flux alternativ: –
Cazul de utilizare: CereSfat
Nume: CereSfat
Descriere: Descrie comportamentul sistemului s ¸i interact ¸iunea acestuia cu un Pacient.
Actor: Pacient.
Eveniment declans ¸ator: Pacientul dores ¸te un sfat de la Doctor.
Precondit ¸ii: Sistemul trebuie s ˘a funct ¸ioneze, Pacientul a creat un cont.
Postcondit ¸ii: Sistemul a memorat cererea trimis ˘a.
Referint ¸e ˆıncrucis ¸ate: F4.1-F4.3.
Flux principal:
40
Dezvoltarea aplicat ¸iei software Descrierea cazurilor de utilizare
Pacient Sistem
1.Cere crearea unui mesaj 2.Cere specializarea aleas ˘a.
3.Introduce s ¸i trimite r ˘aspunsul. 4.Cere doctorul ales
5.Introduce s ¸i trimite r ˘aspunsul. 6.Cere introducerea mesajului.
6.Introduce s ¸i trimite mesajul . 7.Trimite mesajul.
8. Memoreaz ˘a mesajul.
Tabelul 4.4: Fluxul principal al cazului de utilizare: CereSfat
Flux alternativ: –
Cazul de utilizare: Ofer ˘aSfat
Nume: Ofer ˘aSfat
Descriere: Descrie comportamentul sistemului s ¸i interact ¸iunea acestuia cu un Doctor.
Actori: Doctor.
Eveniment declans ¸ator: Doctorul primes ¸te un mesaj de la Pacient.
Precondit ¸ii: Sistemul trebuie s ˘a funct ¸ioneze, Doctorul a creat un cont.
Postcondit ¸ii: Sistemul a memorat r ˘aspunsul.
Referint ¸e ˆıncrucis ¸ate: F5.1-F5.2.
Flux principal:
Doctor Sistem
1.Cere afis ¸area mesasjelor 2.Afis ¸eaz ˘a mesajele primite.
3.Vizualizeaz ˘a mesajele. 4.Marcheaz ˘a mesajele ca fiind citite.
5.R˘aspunde la mesaj 6.Memoreaz ˘a r˘aspunsul.
Tabelul 4.5: Fluxul principal al cazului de utilizare: Ofer ˘aSfat
Flux alternativ: –
41
Dezvoltarea aplicat ¸iei software Diagrama cazurilor de utilizare
4.3 Diagrama cazurilor de utilizare
Figura 4.1: Diagrama cazurilor de utilizare
42
Dezvoltarea aplicat ¸iei software Diagrama de activit ˘at ¸i
4.4 Diagrama de activit ˘at ¸i
Figura 4.2: Diagrama de activit ˘at ¸i a cazului de utilizare ˆInregistrare
43
Dezvoltarea aplicat ¸iei software Diagrama de activit ˘at ¸i
Figura 4.3: Diagrama de activit ˘at ¸i a cazului de utilizare Solicit ˘aProgramare
Figura 4.4: Diagrama de activit ˘at ¸i a cazului de utilizare R ˘aspunsProgramare
44
Dezvoltarea aplicat ¸iei software Diagrama de activit ˘at ¸i
Figura 4.5: Diagrama de activit ˘at ¸i a cazului de utilizare CereSfat
Figura 4.6: Diagrama de activit ˘at ¸i a cazului de utilizare Ofer ˘aSfat
45
Capitolul 5
Implementare
Tipica pagin ˘a dinamic ˘a web este format ˘a din diferite componente, care sunt asamblate
ˆın timpul rul ˘arii pentru a produce ceea ce utilizatorul vede ˆın browser. Aceste componente
includ view-urile, care constau ˆın elementele de design s ¸i cont ¸inut specific paginii, layout-ul,
care este format din antetul paginii, subsolul paginii, precum s ¸i alte elemente de design care
tind s ˘a apar ˘a mai mult sau mai put ¸in la nivel global, de-a lungul site-ului, precum s ¸i alte
active, cum ar fi imaginile, elementele de JavaScript sau CSS. Framework-urile, cum ar fi
Laravel, creaz ˘a s ¸i returneaz ˘a aceste pagini, ca r ˘aspuns la solicit ˘arile de routare s ¸i preluarea
acestor cereri printr-un controller.
Figura 5.1: Pagina de start
Laravel utilizeaz ˘aComposer pentru gestiunea dependent ¸elor sale.
Composer este un manager de pachete la nivel de aplicat ¸ie pentru PHP, care ofer ˘a un
format standard pentru gestiunea dependent ¸elor PHP-ului s ¸i bibliotecile necesare. Composer
ruleaz ˘a prin linia de comand ˘a s ¸i instaleaz ˘a dependent ¸ele (de exemplu, biblioteci) pentru o
aplicat ¸ie. De asemenea, permite utilizatorilor s ˘a instaleze aplicat ¸ii PHP care sunt disponibile
pe ”Packagist”, care este depozitul s ˘au principal care cont ¸ine pachetele disponibile. Acesta
prevede capabilit ˘at ¸i Autoload pentru biblioteci, care specific ˘a informat ¸ii autoload pentru a
us ¸ura utilizarea de cod tert ¸ ˘a parte.
Pentru a instala Composer, se poate downloada setup-ul acestuia de pe site-ul oficial
sau din linia de comand ˘a prin comenzile:
46
Implementare Implementare
php -r "copy(’https://getcomposer.org/installer’,
’composer-setup.php’);"
php -r "if (hash_file(’SHA384’, ’composer-setup.php’) ===
’bf16ac69bd8b807bc6e4499b28968ee87456e29a3894767b60c2d4dafa3d10
d045ffef2aeb2e78827fa5f024fbe93ca2’)
{ echo ’Installer verified’; } else { echo ’Installer corrupt’;
unlink(’composer-setup.php’); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink(’composer-setup.php’);"
Figura 5.2: Instalare Composer ˆın linia de comand ˘a
Dup˘a ce acesta s-a instalat, putem efectua instalarea Laravel-ului. Prin linia de comand ˘a
se va downloada Laravel folosind Composer:
composer global require "laravel/installer"
Dup˘a ce acesta s-a instalat putem crea o aplicat ¸ie foarte us ¸or folosind comanda:
laravel new , apoi urmat de tipul aplicat ¸iei: new, blog, etc.
Aplicat ¸ia creat ˘a va ar ˘ata astfel:
Figura 5.3: Aplicat ¸ia nou ˘a.
47
Implementare Implementare
Structura folderului creat:
Figura 5.4: Folderul nou creat
Toate fis ¸ierele de configurare pentru cadrul Laravel sunt stocate ˆın directorul config .
Fiecare opt ¸iune este documentat ˘a. De asemenea, poate fi necesar ˘a configurarea s ¸i anumitor
permisiuni. Directoarele storage s ¸ibootstrap/cache ar trebui declarate writable, deoarece
serverul sau chiar aplicat ¸ia este posibil s ˘a nu ruleze ˆın caz contrar.
Urm ˘atorul lucru este setarea cheii de aplicat ¸ie. Aceasta const ˘aˆıntr-un s ¸ir de caractere
aleatoare. De obicei, acest s ¸ir ar trebui s ˘a fie de 32 de caractere aleatoare. Cheia poate
fi setat ˘aˆın fis ¸ierul de mediu .env.ˆIn cazul ˆın care cheia de aplicat ¸ie nu este, sesiunile de
utilizator s ¸i alte date criptate nu vor fi sigure.
Dup˘a instalarea Composer s ¸i Laravel, se foloses ¸te comanda: laravel new LicentaSDC
pentru a crea o nou ˘a aplicat ¸ie.
Pentru ca pagina s ˘a ruleze corespunz ˘ator trebuie utilizat un server local s ¸i un program
precum XAMPP.
Comanda pentru serverul local:
php artisan serve
Figura 5.5: Comanda PHP Artisan Serve
48
Implementare Implementare
Datorit ˘a framework-ului, sistemul de autentificare este predefinit, as ¸adar, nu tre-
buie dec ˆat rulat ˘a comanda Artisan: php artisan make:auth , dup ˘a care va fi f ˘acut un sistem
stabil de Register/Login.
Figura 5.6: Pagina de Register
Figura 5.7: Pagina de Login
Codul pentru crearea paginilor se g ˘ases ¸te ˆın AuthController.php.
Pentru a configura enviroment-ului,trebuie schimbat din fis ¸ierul .env numele bazei de
date, username-ul s ¸i setarea parolei.
Dup˘a crearea enviromentului putem observa c ˘a Laravel a creat dou ˘a migr ˘ari: create
users table s ¸i password resets.
49
Implementare Implementare
Figura 5.8: Pagina .env
Deoarece este nevoie de un sistem de gestiune al aplicat ¸iei/, migrarea pentru create
users tabel trebuie ad ˘augat ˘a linia:
$table->boolean(’admin’);
50
Implementare Implementare
Figura 5.9: Migrarea pentru create users tabel
Figura 5.10: Migrarea pentru password reset
51
Implementare Implementare
Aceast ˘a linie va fi ad ˘augat ˘aˆın fis ¸ierul create users table s ¸i ne va permite ˆınregistrarea
ca administrator/utilizator pe aplicat ¸ie. Pentru ca schimbarea s ˘a aib ˘a loc, rul ˘am comanda de
terminal:
php artisan migrate
Dup˘a rularea comenzii putem observa aparit ¸ia tabelelor ˆın baza de date.
Figura 5.11: Baza de date ˆın PHPMyAdmin
ˆIn formularul de ˆınregistrare ne lipses ¸te partea de select ¸ie a tipului de cont. Pentru
asta, se modific ˘a controller-ul care se ocup ˘a cu acest formular s ¸i un model User.php pentru a
ad˘auga noua coloan ˘aˆın tabel. Nu mai r ˘amˆane dec ˆat s˘a modific ˘am view-ul s ˘a ne permit ˘a s˘a
vedem select ¸ia tipului de cont.
52
Implementare Implementare
Figura 5.12: Pagina AuthController.php
Pentru o nou ˘a funct ¸ionalitate, am ad ˘augat s ¸i un form pentru o programare.
Pacientul, o dat ˘a logat, poate face o programare, select ˆand un doctor, introduc ˆand data
s ¸i o scurt ˘a descriere.
Figura 5.13: Pagina Solicit ˘aProgramare
53
Implementare Implementare
Pagina de migrare pentru programare:
Figura 5.14: Pagina de migrare pentru programare
54
Concluzii
Sper ca prin aceast ˘a lucrare de licent ¸ ˘a s˘a fie ˆınt ¸elese tehnologiile folosite dezvolt ˘arii
unei aplicat ¸ii ˆın Laravel. Am ˆıncercat s ˘a fiu c ˆat mai succint ˘a s ¸i la punct pentru o mai us ¸oar ˘a
ˆınt ¸elegere a unui dezvoltator ˆıncep ˘ator spre mediu al acestui gen de aplicat ¸ii.
Pentru mine aceast ˘a lucrare a fost o provocare datorit ˘a limbajului part ¸ial necunoscut.
Pot spune doar c ˘a lucrarea mi-a deschis un nou orizont, foarte larg s ¸i plin de posibilit ˘at ¸i: cea
de dezvoltator.
Aplicat ¸ia, ˆın starea actual ˘a este doar un prototip. Ea poate fi ˆımbun ˘at˘at ¸it˘a prin ad ˘augarea
altor funct ¸ionalit ˘at ¸i.
ˆInˆıncheiere, doresc s ˘a afirm c ˘a f˘ar˘a aces ¸ti ani de studiu petrecut ¸i ˆın aceast ˘a facultate
nu as ¸ fi putut duce la cap ˘at lucrarea. Informat ¸iile privind sintaxa program ˘arii, modelarea
gˆandirii spre un model mai algoritmic, analitic s ¸i matematic m-au ajutat s ˘a duc la cap ˘at
dezvoltarea aplicat ¸iei s ¸i scrierea lucr ˘arii. Nu cred c ˘a as ¸ fi putut evolua la fel de mult ˆın alt ˘a
parte, iar acest lucru mi-a dat ˆıncrederea de a ˆıncerca s ˘a creez aplicat ¸ia fiind sigur ˘a pe mine
s ¸i pe cunos ¸tint ¸ele mele.
55
Bibliografie
1.Terry Matula. ”Laravel Application Development Cookbook”. Packt Publishing,
2013.
2.Gary Blankenship. ”Laravel 5 Official Documentation”. Leanpub, 2015.
3.W.Jason Gilmore. ”Easy Laravel 5”. Leanpub, 2015.
4.Martin Bean. ”Laravel 5 Essentials”. Packt Publishing, 2014.
5.Shawn McCool. ”Laravel Starter”. Packt Publishing, 2012.
6.https://laravel.com/docs/5.2 .
7.Mehdi Achour, Friedhelm Betz, Antony Dovgal, ”PHP Manual”. PHP Documentation
Group, 2016.
8.http://php.net/docs.php .
9.https://laracasts.com/ .
56
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Dezvoltarea aplicat iilor WEB cu [625375] (ID: 625375)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
