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

Similar Posts