ef lucr. dr. mat. Crețulescu Radu Absolvent: Severin Alexandru Specializarea Calculatoare – Sibiu, 2018 – UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU… [628493]

UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU

FACULTATEA DE INGINERIE

DEPARTAMENTUL DE CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI

PROIECT DE DIPLOMĂ

Îndrumător:

Ș
ef lucr. dr. mat. Crețulescu Radu

Absolvent: [anonimizat], 2018 –

UNIVERSITATEA “LUCIAN BLAGA” DIN SIBIU

FACULTATEA DE INGINERIE

DEPARTAMENTUL DE CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI

2Performant – postarea automată a

campaniilor pe Facebook
ș
i Instagram

Îndrumător:

Ș
ef lucr. dr. mat. Crețulescu Radu

Absolvent: [anonimizat], 2018 –

1

Cuprins

1.
Prezentarea temei…………………………………………………………3

2.
No
ț
iuni teoretice………………………………………………………….4
2.1. Sistemul de operare macOS

2.2. Sublime Text 3

2.3. PHP

2.3.1. Istoria PHP, începuturi

2.3.2. PHP 3

2.3.3. PHP 5

2.3.4. PHP 7

2.4. HTML

2.5. CSS

2.6. JavaScript

2.7. MVC

2.7.1. Model

2.7.2. View

2.7.3. Controller

2.8. Laravel Framework

2.8.1. Ce este un framework

2.8.2. Laravel

2.8.3. Func
ț
ionalită
ț
i ale Laravel

2.8.3.1. Rutarea

2.8.3.2. Middleware-ul

2.8.3.3. Autentificarea si înregistrarea

2.8.3.4. Sistemul de cacheing

2

2.8.3.5. Queue

2.8.3.6. Eloquent ORM

2.8.3.7. Artisan

2.9. MySQL

3.
Implementarea temei de proiect…………………………………………….

4.
Concluzii

5.
Bibliografie

1. Prezentarea temei

Tema
de
licenta
se
numeste


2Performant

postarea
automată
a
campaniilor
pe

Facebook
ș
i Instagram

”.

LOREM IPSUM DOLOR SIT AMET PLM

3

2. No
ț
iuni t eoretice

Primii pa
ș
i pe care tr ebuie sa ii facem pentru dezvoltare unei aplica
ț
ii sunt foarte importan
ț
i,

deoarece, din acest moment, fiecare decizie ne poate influen
ț
a în mod pozitiv sau negativ

productivitatea
ș
i punerea în aplicare a tot ceea ce ne propunem. De aceea am ales cu foarte mare

aten
ț
ie tehnologiile folosi te în realizarea proiectului, pe care o sa le prezint în continuare.

2.1. Sistemul de operare macOS – High Sierra

După cum era de a
ș
teptat, prima decizie pe care am fost nevoit sa o fac, era sa îmi aleg

sistemul de operare în care o sa dezvolt aplica
ț
ia, am ales macOS [1] , deoarece acesta este

printre cele mai stabile sisteme de operare, iar un programator are nevoie de un sistem stabil
ș
i

făcut pentru developeri. În macOS este foarte u
ș
or de setat
ș
i configurat toate programele
ș
i

softurile de care avem nevoie
ș
i nu în ultimul rând este cel mai ferit sistem de operare de către

viru
ș
i, datorită proceselor de verificare prin care trec programele aflate în appStore.

macOS este sistemul de operare dezvoltat
ș
i comercializat de gigantul american Apple Inc.

începând cu anul 2001. Ca si utilizare pe scară mondială pentru calculatoarele desktop si laptop,

macOS este situat pe pozi
ț
ia secundă, după sistemul de operare Windows, dezvoltat de către cei

de la Microsoft. Sistemul de operare Windows conduce deta
ș
at în acest top, având undeva la

88.87% din toată pia
ț
a, iar macOS aproximativ 8.06%. Aceste statistici sunt calculate pentru anul

2017 . Mai jos pute
ț
i vede a
ș
i celelalte sisteme de operare, ordona te după share-ul din pia
ț
ă.

Fig.1 SO – share market (

https://goo.gl/DRXayy

)

4

macOS este a doua versiune de sistem de operare a celor de la Apple, prima s-a numit Mac OS,

care a fost lansată în anul 1984, iar ultima versiune, Mac OS 9, a fost lansata în anul 1999.

Versiuena desktop, s-a numit OS X 10.0
ș
i a fost lansată în luna martie a anului 2001. Pe

parcursul anilor OS X a ajuns de la versiunea 10.1 pană la 10.9 ‘Mavericks’ lansată în anul 2013,

ca mai apoi, în anul 2016, noua versiunea sa se numească macOS Yosemite. Versiunea de

macOS High Sierra a luat na
ș
tere în septembrie 2017.

După lansarea originală, a macOS, au existat mai multe versiuni, acestea fiind:


OS X 10.0 Cheetah – 24 Martie, 2001


OS X 10.1 Puma – 25 Septembrie 2001


OS X 10.2 Jaguar – 24 August 2001


OS X 10.3 Panther – 24 Octombrie 2003


OS X 10.4 Tiger – 29 Aprilie 2005


OS X 10.5 Leopard – 26 Octombrie 2007


OS X 10.6 Snow Leopard – 28 August 2009


OS X 10.7 Lion – 20 Iulie 2011


OS X 10.8 Mountain Lion – 25 Iulie 2012


OS X 10.9 Mavericks – 22 Septembrie 2013


macOS Yosemite – 16 Octombrie 2014


macOS El Capitan – 8 Iunie 2015


macOS Sierra – 12 Iunie 2016


macOs High Sierra – 25 Septembrie 2017

2.2. Sublime Text 3

Sublime Text[2] este un editor de text foarte complex
ș
i bine structurat pentru cod, markup

ș
i proză, este cross-platfo rm, iar dacă vreodată trebuie să te mu
ț
i, de pe Windows pe macOS, nu

o să găse
ș
ti prea multe di feren
ț
e. Primul release a fost în 18 Ianua rie 2008
ș
i a fost dezvoltat de

5

către Jon Skinner
ș
i Will Bond, este scris în limbajele C++
ș
i Python ceea ce ii conferă stabilitate

ș
i performan
ț
e maxime în realizarea task-urilor.

Sublime este rapid
ș
i bog at în func
ț
ii, cu suport pentru practic fie care limbaj de programare, de

la C++, Python, PHP până la Javascript, nu are o limitare din acest punct de vedere. Acesta

acceptă selec
ț
ii multiple, pliere cod, legături tastatură, macro-uri, editare pe ecran
ș
i proiecte.

Sublime Text are, de asemenea, un fullscreen mod, care arata grozav pe ecranele mari. Acesta

rulează pe Linux, Windows
ș
i macOS, iar aceea
ș
i licen
ț
ă o po
ț
i folosi pe toate platformele.

Caracteristici
ș
i func
ț
ionalită
ț
i:


Panouri, grupuri
ș
i moduri de afi
ș
are: Programul oferă un număr de moduri de afi
ș
are,

inclusiv panouri care pot afi
ș
a până la patru fi
ș
iere simultan, precum
ș
i moduri de ecran

complet
ș
i fără dis tragere, care arată doar un fi
ș
ier fără niciunul din meniurile

suplimentare din jurul acestuia.


Selectarea coloanelor
ș
i editare multi-select: Această caracteristică permite utilizatorilor

să selecteze simultan coloane întregi sau să plaseze mai mult de un cursor în text, ceea ce

permite editarea simultană. To
ț
i cursorii se comport ca
ș
i cum ar fi unul singur in text.


Completare automata: Sugerează utilizatorului func
ț
ii, variabile, clase din interiorul

proiectului sau chiar
ș
i func
ț
ii preconfigurate ale limbajul ui folosit în cod.


Afi
ș
area sintaxei
ș
i afi
ș
area contrastului ridicat: Fundalul întunecat al programului este

destinat să reducă intensitatea
ș
i să mărească contrastul cu textul, astfel ochii sunt

proteja
ț
i mai bine
ș
i nu obosesc la fel de repede


Goto Anything: Această caracteristica este folosită pentru a deschide fi
ș
ierele cu doar

câteva apăsări de taste
ș
i pentru a sări imediat la simboluri, linii sau cuvinte.


Pluginuri, pachete, API: Are foarte multe plugin-uri, care sporesc productivitarea

programatorului. În plus, realizarea unui plugin nou este extrem de simplă, ele se

realizează cu ajutorul limbajului de programare Python.


Istorie persistentă: În momentul în care redeschizi un proiect, po
ț
i da undo la un fi
ș
ier

pană la ultima versiune a sa.

6


Salvare automata: încearcă să împiedice utilizatorii să-
ș
i piardă munca, prin salvarea

automata a fi
ș
ierelor.

2.3. PHP

Cea mai importantă decizie în realizarea unui proiect este alegerea limbajului de programare

principal, pentru mine a fost una destul de u
ș
oară, deoarece am avut prilejul sa lucrez cu PHP[3]

încă din timpul liceului, as putea spune ca i-l stăpânesc foarte bine, dar
ș
i pentru că este cel mai

folosit limbaj de programare folosit pentru aplica
ț
iile web. Inclusiv denumirea populara a PHP

este “personal home page”, am putea spune că este făcut exclusiv pentru dezvoltarea de software

web.


PHP: Hypertext Preprocessor

(sau pur
ș
i simplu PHP) este un limbaj de server-side

scripting, adică toată procesarea este făcută de server, spre deosebire de javascript care este

client-side, conceput pentru dezvoltarea de aplica
ț
ii web. Acesta a fost ini
ț
ial creat de Rasmus

Lerdorf în 1994, iar în continuare este intre
ț
inut
ș
i dezvoltat de către PHP GROUP.


Ce poate face PHP-ul ?

Orice! PHP se concentrează pe server-side scripting, astfel incât să

poată recep
ț
iona datele di n formulare, generarea unui con
ț
inut dinamic al paginii sau trimiterea
ș
i

primirea de module cookies.

Exista trei domenii în care se pot folosi scripturi PHP :


Server-side scripting: Acesta este principalul domeniu pentru PHP. Ave
ț
i nevoie de trei

lucruri pentru a face acest lucru: parser-ul PHP (modul CGI sau server), un server web
ș
i

un browser web.


Command line scripting: Pute
ț
i face un script PHP pentru al rula fără niciun server sau

browser. Ave
ț
i nevoie doar de parser-ul PHP pentru al utiliza în acest mod. Acest tip de

utilizare este ideal pentru scripturile executate în mod regulat folosind cron-uri (Linux)

sau Task Scheduler (pe Windows). Aceste scripturi pot fi folosite
ș
i pentru sarcini simple

de procesare a textului.

7


Aplicatii Desktop: Alegerea PHP pentru a crea aplica
ț
ii desktop, cu interfa
ț
ă grafică, nu

este cea mai buna alegere, însă cu extensia PHP-GTK ave
ț
i
ș
i această posibilitate.

2.3.1. Istoria PHP, începuturi

Rasmus Lerdorf, in 1994, a scris mai multe programe CGI (Common Gateway Interface) in

C, pe care le folosea pentru a-
ș
i men
ț
ine pagina sa personala la zi . El le-a extins pentru a putea

lucra cu formulare web
ș
i pentru a putea lucra cu baze de date, numind această colec
ț
ie de

programe PHP / FI adică "Personal Home Page / Forms Interpreter". La începuturi, PHP, nu a

fost gândit ca un nou limbaj de programare, el crescând organic, mai multi programatori

contribuiau la adăugarea de func
ț
ionalitati noi. O echipă de dezvoltare a început să se formeze

ș
i, după luni de lucru
ș
i testări beta, a lansat oficial PHP / FI 2 în noiembrie 1997. Din cauză că a

avut mai mul
ț
i contribuito ri, fără ca cineva să respecte ni
ș
te standarde, s-a ajuns la denumirea

incoerentă a func
ț
iilor
ș
i la ordonarea inconsecventă a parametrilo r lor.

2.3.2. PHP 3

Rasmus Lerdorf, împreună cu Zeev Suraski
ș
i Andi Gutmans


au rescris parser-ul în 1997
ș
i

au format baza pentru PHP 3, schimbând numele limbii în acronimul recursiv PHP: Hypertext

Preprocessor.Ulterior, testarea publică a PHP 3 a început
ș
i lansarea oficială a venit în iunie

1998. Suraski
ș
i Gutmans au început apoi o nouă rescriere a nucleului PHP, producând Zend

Engine în 1999. Ei au fondat, de asemenea, Zend Technologies în Ramat Gan, Israel.

2.3.3. PHP 5

La mijlocul anului 2004, mai exact pe 14 iulie, a fost lansat PHP 5, rulând cu Zend Engine

II. PHP 5 a inclus func
ț
ii noi, precum suport îmbunătă
ț
it pentru programarea orientată pe obiecte

(OOP), extensia PHP Data Objects (PDO) (care define
ș
te o interfa
ț
ă u
ș
oară
ș
i consistentă pentru

accesarea bazelor de date)
ș
i numeroase îmbunătă
ț
iri ale performan
ț
ei. PHP 5.6 este ultimul

update
ș
i versiune stabila a PHP, aceasta o sa beneficieze de update-uri de securitate pana la

sfar
ș
itul lui 2018.

2.3.4. PHP 7

Între anii 2014-2015 a fost dezvoltată o noua versiune de PHP majora, numita PHP 7, sărind

peste versiunea de PHP 6, care a fost un experiment pe care nu l-au lansat niciodată. Principalul

8

obiectiv, a fost rescrierea ZEND Engine, pentru a cre
ș
te performan
ț
ele
ș
i a mări viteza de

procesare a PHP 7. Fa
ț
ă de versiunile anterioare, PHP 7, este de două ori mai rapid, după cum

putem observa în graficele de mai jos. Datorita acestul update major, nu doar codul va rula mai

rapid, dar
ș
i necesitatea d e servere va fi mai mică pentru acela
ș
i număr de utilizatori în cazul

PHP 5.

Fig. 2 – Requesturi pe secunda . WordPress (

https://goo.gl/QjuyeD

)

9

Fig. 3 – Requesturi pe secunda . Laravel & Zend Framework (

https://goo.gl/QjuyeD

)

După aceste grafice, care am putea spune că vorbesc de la sine, m-am hotărât să folosesc în

proiectul meu, PHP 7, care de departe este cel mai rapid
ș
i stabil dintre toate versiunile de PHP.

Mai jos putem vedea
ș
i procentajul în alegerea developerilor, când se decid ce limbaj de

programare să folosească pentru aplica
ț
ii web.

Fig. 4 – Utilizarea limbajelor de programare pentru site-uri web (

https://goo.gl/Vqx5BB

)

10

PHP conduce în acest clasament
ș
i datorită framework-urilor sau CMS-uri (content manage

sistem) open-source, dezvoltate special pentru PHP, ca WordPress, Zend Framework, Laravel,

Joomla, dar
ș
i datorită un or site-uri care au fost construite în PHP, precum Facebook sau

Wikipedia. Acestora li se mai poate adăuga
ș
i faptul ca sintaxa PHP este foarte u
ș
or de în
ț
eles
ș
i

folosit în program, dar
ș
i faptul ca există o comunitate foarte mare care ajuta la rezolvarea unor

probleme.

WordPress este cel mai popular sistem de gestionare a site-urilor web (CMS) sau blogging

utilizat pe Web, fiind folosit de peste 30% din primele 10 milioane de site-uri web.

Am decis să folosesc framework-ul Laravel, deoarece acesta are o documenta
ț
ie foarte bună
ș
i pe

lângă asta este
ș
i structura t foarte intuitiv, folose
ș
te conceptul de Model-View-Controller.

2.4. HTML

Hypertext Markup Language (HTML) este limbajul standard pentru crearea de pagini web

ș
i aplica
ț
ii web. Împreună cu CSS
ș
i JavaScript formează o triadă de tehnologii de bază pentru

World Wide Web. A fost dezvoltat de catre Tim Berners-Lee în anul 1992, care are
ș
i titulatura

de inventatorul Word Wide Web-ului (WWW).

Ce face HTML-ul:


reprezintă limbajul Hyper Text Markup Language


descrie structura de bază a unei pagini Web


este format din grupuri de elemente


elementele sunt structurate in tipuri tag-uri


Tag-urile reprezinta bucati de continut, cum ar fi:


<!DOCTYPE html> declaratia tipului de document, acesta fiind HTML 5


<html> este elementul root, care incorporează restul elementelor de

HTML


<head> aici sunt adăugate toate tag-urile care afi
ș
ează informa
ț
ii despre

pagina web, cum ar fi titlu, descriere, cuvinte cheie s.a.m.d.

11


<title> reprezintă titlul paginii pe care navigam


<body> reprezintă tot con
ț
inutul pe care i-l vedem în pagină, aici o sa fie

adăugate toate celelalte tag-uri HTML


h1, h2, h3, h4, h5, h5 : reprezintă titluri de rubrici din pagină


p : folosit pentru paragrafe


Browserele web nu afi
ș
ează tag-urile HTML, ci le cite
ș
te
ș
i le interpretează

pentru a putea afi
ș
a con
ț
inutul în pagina

HTML5

Este cea mai nouă
ș
i complexă versiune a HTML
ș
i a fost conceput pentru a putea face

absolut orice i
ț
i dore
ș
ti în mediul web, fără a fi necesară instalare a de pluginuri pentru

browser-ul folosit. Versiunea 5.0 fost lansată în 28 Octombrie 2014, ca mai apoi sa fie

imbunătă
ț
ită an de an, aju ngând la versiunea HTML 5.3, lansata în 2017.

Poate reda absolut orice, de la fi
ș
iere audio la fi
ș
iere video, pana la crearea de anima
ț
ii sau chiar

de aplica
ț
ii foarte comple xe, cum ar fi jocurile. Este cea mai buna alternativa pentru Flash, care

ș
tim foarte bine ca este de stul de instabil din punct de vedere al securită
ț
ii
ș
i de aceea companiile

mari au renun
ț
at treptat la Flash, în detrimentul HTML 5.

2.5. CSS

CSS sau Cascading Style Sheets a fost creat pentru a putea descrie browser-ului, modul în

care se afi
ș
ează si arată e lementele de HTML în cadrul paginii.

Totul a început când a apărut HTML 3.2, deoarece, ini
ț
ial HTML, a fost creat doar pentru a

descriere browser-ului web care este con
ț
inutul paginii nu
ș
i cum să arate, iar în versiunea 3.2 se

regăseau
ș
i tag-uri ca ‘fon t’ sau ‘color’, care defineau font-ul textului respectiv culoarea acestuia,

astfel era foarte greu pentru un developer, deoarece acesta era nevoit să adauge aceste informa
ț
ii

despre font
ș
i culoare în t oate paginile HTML, era un co
ș
mar. CSS i
ț
i u
ș
urează munca foarte

mult, deoarece acela
ș
i fi
ș
ier de CSS poate fi folosit în mai multe pagini de-o data, iar

12

proprietă
ț
ile CSS pot fi ap licate în acela
ș
i timp mai multor tag-ur i de HTML, care poate au

caracteristici identice, deci mai pu
ț
in cod scris, aplicat mai multor elemente.

În 17 decembrie 1996, primele specifica
ț
ii CSS erau recomandate de consor
ț
iul Word Wide

Web (W3C), astfel formatarea stilurilor era scoasă din con
ț
inutul paginii HTML.

CSS-ul are 3 păr
ț
i de baz ă:


Selectorul – face referin
ț
ă la tag prin nume, id sau clasă


Proprietatea – partea care arată ce trebuie modificat


Valoarea – indică modul de prezentare

2.6. JavaScript

A fost creat de către Brendan Eich, programator la acea vreme la Netscape Communications

Corporate, în septembrie 1995
ș
i a durat doar 10 zile să dezvolte acest limbaj, care pe atunci se

numea Mocha. Ini
ț
ial a fo st dezvoltat pentru browser-ul web Netscape Navigator
ș
i apoi a

devenit cunoscut ca
ș
i Liv eScript. Mai târziu denumirea acestuia se schimba iară
ș
i, în JavaScript,

multi spun ca pe vremea respectiva ar fi fost o mi
ș
care tactica de marketing, deoarece
ș
i în acea

perioada era foarte cunoscut publicului, limbajul de programare Java, a celor de la Oracle, al
ț
ii ar

spune ca această denumire vine de la faptul ca browserul Netscape putea rula
ș
i Java. Datorită

acestei denumiri
ș
i în ziua de azi există o confuzie foarte mare intre Java
ș
i JavaScript, chiar dacă

cele două limbaje nu au nimic în comun.

JavaScript a fost dezvoltat pentru a face mai interesanta experienta user-ului în navigarea

paginilor web
ș
i crearea d e efecte vizuale
ș
i interactive.

Încă din 1996, importan
ț
a JavaScript a devenit atât de mare încât a fost nevoie de crearea

unei institu
ț
ii interna
ț
ionale care să se ocupa cu standardele de sc ripting a JavaScript, numita

13

ECMA (European Computer Manufacturers Association), care
ș
i astăzi este responsabilă cu

dezvoltarea limbajului.

Popularitatea JavaScript a crescut de la an la an, ajungând în anul 2016 să fie folosit de

aproximativ 92% din totalul de site-uri web, printre care se numără
ș
i gigantii internetului,

Google, Facebook sau Amazon. Datorită JavaScript, astăzi, interac
ț
iunea dintre utilizator
ș
i

website este mult mai avansată
ș
i plăcută, de exemplu, fără JavaScript, notificările real-time sau

mesageria online a Facebook nu ar fi posibile.

În zilele noastre JavaScript se afla peste tot, dacă cea mai comună parte este cea de

client-side scripting
ș
i fără ea nu am putea interac
ț
iona în atâtea feluri cu paginile web sau a ne

juca jocuri online, de câ
ț
iva ani au apărut
ș
i aplica
ț
ii care rulează server-side scripting, cum ar fi

Node.js. JavaScript a devenit atât de folosit, încât po
ț
i scrie aplica
ț
ii de mobile, pentru android
ș
i

iOS, nativ, cu ajutorul React-Native.

După părerea mea, JavaScript este cel mai folosit limbaj de programare, deoarece este u
ș
or

de învă
ț
at, foarte inovativ
ș
i fiind în majoritatea cazurilor client-s ide scripting acesta se folose
ș
te

de resursele utilizatorului pentru a rula,
ș
i nu de cele a serverului web. Astfel încât, dacă userul

beneficiază de un device performant
ș
i rularea JavaScript va merge conform a
ș
teptărilor. Am

putea spune că dacă stăpâne
ș
ti foarte bine JavaScript, ai putea face orice fel de aplica
ț
ie, de la

aplica
ț
ii web la mobile, d e la front-end la back-end cu un singur limbaj de programare.

2.7. MVC

MVC (model-view-controller), a apărut la sfâr
ș
itul anilor 1970
ș
i este un
ș
ablon arhitectural

folosit în industria de software development (inclusiv web development). Această modalitate de

lucru reu
ș
este cu succes i zolarea păr
ț
ii logice de interfa
ț
a proiectului, rezultând în aplica
ț
ii

extrem de u
ș
or de modifi cat. În organizarea MVC, modelul reprezinta informa
ț
ia (datele) de care

are nevoie aplica
ț
ia, view erul corespunde cu elementele de interfa
ț
ă, iar controller-ul reprezinta

sistemul comunicativ
ș
i decizional ce procesează datele informa
ț
ionale, făcând legătura intre

model
ș
i view.

14

Fig. 5 – Diagrama MVC (

https://goo.gl/NTX9qR

)

2.7.1. Model

Modelul este numele dat de stocarea permanentă a datelor utilizate în proiectarea generală.

Trebuie să permită accesul pentru ca datele să fie vizualizate sau să fie colectate
ș
i scrise,
ș
i

reprezintă puntea dintre componenta View
ș
i componenta Controller.

Modelul nu are nicio legătură sau cunoa
ș
tere a ceea ce se întâmplă cu datele pe care acesta le

procesează
ș
i le trimite la celelalte componente.Nu solicită
ș
i nu caută răspunsuri din partea

celorlalte păr
ț
i, scopul său unic este de a procesa datele în memoria sa permanentă sau de a căuta

ș
i de a pregăti date care s ă fie transmise de-a lungul celorlalte păr
ț
i.

Modelul, totu
ș
i, nu poate fi rezumat simplu ca bază de date sau ca o poartă către un alt sistem

care gestionează procesul de procesare a datelor. Modelul trebuie să ac
ț
ioneze ca un gatekeeper

al datelor în sine, fără să pună întrebări, ci să accepte toate cererile care i se întâmplă. Deseori,

15

cea mai complexă parte a sistemului MVC, componenta Model este de asemenea vârful

întregului sistem, deoarece fără acesta nu există o legătură între Controller
ș
i View.

2.7.2. View

View-ul se ocupă de afi
ș
area datelor, practic această parte a programului va avea grijă de

cum vede end-userul informa
ț
ia procesată de controller. O dată ce func
ț
iile sunt executate de

model, View-ului îi sunt oferite rezultatele, iar acesta le va trimite către browser. In general

viewul este o mini-aplica
ț
ie ce ajută la randarea unor informa
ț
ii, având la bază diverse

template-uri.

Pentru a implementa corect conceptul de MVC nu trebuie să existe nicio interac
ț
iune între

modele
ș
i views: toată log ica este manipulată de controllers.

De asemenea, este important să re
ț
inem că partea de View nu este dată niciodată de către

controller. A
ș
a cum am m en
ț
ionat când discutam modelul, nu exi stă o rela
ț
ie directă între View

ș
i Controller fără Model î ntre ele.

2.7.3. Controller

Reprezinta creierul aplica
ț
iei. Aceasta face legătura intre Model
ș
i View, intre ac
ț
iunile

userului
ș
i partea decizion ală a aplica
ț
iei. În func
ț
ie de nevoile utilizatorului, controller-ul

apelează diverse functii definite special pentru sec
ț
iunea de site în care se află userul. Func
ț
ia se

va folosi de model pentru a prelucra (extrage, actualiza) datele, după care informa
ț
iile noi vor fi

trimise către view, care mai apoi le va afi
ș
a.

2.8. Laravel framework

16

2.8.1. Ce este un framework

Un framework software, în programarea pe calculator, este o abstrac
ț
ie a codului comun,

oferind func
ț
ionalită
ț
i generice care pot fi rescrise sau folosite de către programator.

Framework-ul este construit astfel încât, vine deja cu unele func
ț
ionalită
ț
i gata pregătite pentru a

fi folosite, de exemplu librărie pentru lucrul cu bazele de date. Acest tip de instrument te ajuta sa

refolose
ș
ti cod, testat
ș
i de către al
ț
i utilizatori, între
ț
inut de obicei de comunită
ț
i relativ mari. De

obicei nu este indicat sa modifici codul de baza al unui framework, dacă cumva ai nevoie de alta

func
ț
ionalitate a unei libr arii, este indicat să o mo
ș
tene
ș
ti
ș
i abia apoi să îi modifici proprietă
ț
ile.

Un framework îndepline
ș
te următoarele:


facilitează lucrul cu tehnologii complexe


aceasta leagă împreună o grămadă de obiecte / componente discrete în ceva mai

util


obligă programatorul să implementeze codul într-un mod care promovează o

codificare consecventă, uniformă, mai pu
ț
ine bug-uri
ș
i aplica
ț
ii mai flexibile


oricine poate testa cu u
ș
urin
ț
ă
ș
i depana codul, chiar dacă acesta nu este scris de

ei, prin modul în care te face sa scrii cod

Când vorbim de un framework, vorbim de un set de caracteristici prin care se define
ș
te cu

adevărat
ș
i atunci putem s pune că un framework este:


Wrapper

(un pachet de proprietati):


simplifică interfa
ț
a unei tehnologii


reduce sau elimina task-urile repetitive


creste flexibilitatea aplica
ț
iei prin abstractizare


reutilizează cod


Arhitectura

:


gestionează o colec
ț
ie de obiecte / functionalitati


codul urmează niste standarde de design pattern


Metodologie

:

17


un set de practici, proceduri
ș
i reguli folosite în crearea unei librării


codul urmează niste standarde de design pattern

Wrapper-ul

Fig. 6 – Diagramă Wrapper (

https://goo.gl/5StqZf

)

Un wrapper este un mod de reambalare a unei func
ț
ii sau a unui set de func
ț
ii (legate sau

nu) pentru a atinge unul sau mai multe din următoarele obiective:


simplificarea utilizării codului


îmbunătă
ț
irea fun c
ț
ionalită
ț
ii de bază


colectarea proceselor discrete într-o asociere logică (un obiect)

Arhitectura

18

Fig 7. Arhitectura framework (

https://goo.gl/5StqZf

)

O arhitectura con
ț
ine o colec
ț
ie de func
ț
ionalită
ț
i pregătite pentru a putea fi utilizate, care

respecta standardul de scriere a codului, design pattern. Arhitecturile pot fi
ș
i sunt utile deoarece

ele creează o structura reutilizabilă (o colecte de obiecte/func
ț
ionalită
ț
i), astfel creste în mod

evident productivitatea unui programator.

Metodologia

Fig. 8 Metodologia unui framework (

https://goo.gl/5StqZf

)

Analizând cuvantul metodologie, în engleza ‘Methodology’ este format din doua cuvinte:

– ‘method’ care înseamnă o cale bine stabilită în a face/rezolva ceva

– ‘ology’ un set de reguli care sunt aplicate, testate
ș
i dovedite în rezolvarea unor task-uri

Dacă o arhitectura se ocupă de asocierea dintre metode/func
ț
ionalită
ț
i, o metodologie se

ocupă cu interac
ț
iunea di ntre acestea, prima fiind o rela
ț
ie pasivă, cea din urma fiind o activitate

derulata.

În PHP sunt o multitudine de framework-uri, care te ajuta sa realizezi proiectele propuse

într-un termen mult mai scurt. De la framework-uri simple care i
ț
i oferă câteva func
ț
ionalită
ț
i de

bază în realizarea unui site, cum ar fi micro-framework-ul Slim (

https://goo.gl/hmwXao

) până la

framework-uri foarte complexe care i
ț
i pun la dispozi
ț
ie o serie de func
ț
ionalită
ț
i mult mai mult

19

decât utile unui programator. De aceea aveam de ales între Phalcon (

https://goo.gl/TdGGx4

) care

de departe este cel mai rapid framework PHP, este scris în C
ș
i are o interfa
ț
ă pentru a putea

utiliza codul în PHP
ș
i framework-ul Laravel (

https://goo.gl/g8HyaS

), care nu este la fel de rapid

ca Phalcon, dar care are o comunitate foarte mare de developeri
ș
i care i
ț
i pune la dispozi
ț
ie

absolut toate uneltele necesare pentru a crea un site. Laravel are
ș
i o documenta
ț
ie foarte

elaborată din care po
ț
i învă
ț
a rapid modul în care func
ț
ionează, de aceea m-am decis ca în

proiectul meu, sa folosesc acest framework.

2.8.2. Laravel

Laravel[4] este printre cele mai cunoscute
ș
i utilizate framework-uri PHP, în ziua de azi,
ș
i

a luat na
ș
tere în Iunie 201 1, atunci cănd Taylor Otwel, programator .net la vremea respectivă,

lucra la un proiect în CodeIgniter, când a observat că acest framework este foarte limitat în

adăugarea de noi func
ț
ionalită
ț
i sau de extinderea acestora. Avea nevoie de mai mult, de mai

multă libertate în a scrie cod, iar CodeIgniter nu îi satisfăceau aceste nevoi
ș
i nici

design-patter-ul aplica
ț
iei nu era cel mai elegant, asa ca s-a decis să facă un framework dedicat

nevoilor unui programator, rezolvând astfel problemele cu care se confruntau programatorii PHP

în acea perioadă. A început pas cu pas, în primă fază, a implementat un sistem simplu de rutare,

respectând pattern-ul unui MVC (model-view-controller), ca mai apoi să adauge noi

func
ț
ionalită
ț
i, necesare pentru construirea unui site într-un mod c at mai rapid
ș
i simplu. În mai

2013 a lansat versiunea 4 a Laravel, cand a implementat un sistem foarte elegant de adăugare a

librăriilor PHP, Composer (

https://goo.gl/sv7SZM

), acest sistem a fost adoptat rapid de

comunitatea PHP. Astăzi toate librăriile pot fi instalate cu acest sistem.

An de an, începând cu versiunea 3 de Laravel, acesta a continuat inoveze
ș
i să fie votat
ș
i ales cel

mai bun framework PHP, deoarece îndepline
ș
te aproape toate necesită
ț
ile
ș
i nevoile unui

developer web.

Laravel i
ț
i pune la d ispozi
ț
ie un adevărat arsenal de instrume nte pentru a putea dezvolta

rapid
ș
i fără bătăi de cap aplica
ț
ii web, cum ar fi o ma
ș
ină virtuală, ‘Homestead’, gata

configurată cu toate software-urile necesare pentru a începe dezvoltarea unei aplica
ț
ii:


sistemul de operare Ubuntu 18.04

20


toate versiunile de PHP: 7.2, 7.1, 7.0 si 5.6


sistem de management al bazelor de date: MySql, Sqlit3, MariaDB (optional)


server virtual pentru web: Nginx, Apache (optional)


composer, necesar pentru instalarea pachetelor PHP


sistem de cacheing: Redis, Memcached


sistem de cautare avansata cum ar fi ElasticSearch (optional)


sistem pentru mail-uri


si multe alte instrumente utile

Din acest motiv am ales să folosesc Laravel, pentru că i
ț
i ocupă foarte pu
ț
in timp pentru a

putea începe efectiv să lucrezi
ș
i să dezvol
ț
i o aplica
ț
ie, deoarece nu i
ț
i mai pierzi timpul cu tot

felul de programe, cu instalări peste instalări, configurări de PHP, de MySql, de creare de server

web, plus că Laravel Homestead func
ț
ionează la fel pe orice sistem de operare, fie Linux, macOs

sau Windows. Cred ca acestea au convins
ș
i pe al
ț
ii
ș
i astfel, Laravel, a ajuns numărul unu în

topul preferin
ț
elor dezvol tatorilor de aplica
ț
ii web cu PHP.

Fig. 9 Anvergura Laravel (

https://goo.gl/MYgQVb

)

21

2.8.3. Func
ț
ionalită
ț
i ale Laravel

2.8.3.1. Rutarea

Cele mai simple rute Laravel acceptă un URI
ș
i ‘Closure’ – o func
ț
ie de callback, oferind o

metodă foarte simplă
ș
i expresivă de definire a rutelor:

Fig. 10 Rutarea in Laravel

Rutarea vă permite să înregistra
ț
i rute care răspund la orice cerere HTTP:

Fig. 11 Rute pentru orice cerere HTTP

Bineîn
ț
eles că există
ș
i rute mult mai complexe, care necesita par ametrii obligatorii / op
ț
ionali în

URI sau rute care sunt atribuite unor Controlere. Pot spune că orice fel de rutare de care avem

nevoie se regăse
ș
te în rut area Laravel.

2.8.3.2. Middleware-ul

Oferă un mecanism pentru filtrarea
ș
i controlul cererilor de HTTP care intră în aplica
ț
ie. De

exemplu, în aplica
ț
ie pres upunem ca avem o sec
ț
iune în care au acces doar persoanele

autentificate, astfel creem un middleware care este atribuit tuturor rutelor vizibile utilizatorilor

autentifica
ț
i. Dacă un use r este neautentificat acest middleware nu îl lasă pe utilizator sa acceseze

22

aceste pagini
ș
i astfel este redirec
ț
ionat către ruta în care se poate autentifica. Putem spune ca

middleware-ul este un fel de sistem de protec
ț
ie prin care putem verifica toate cererile pe care un

utilizator le face pe aplica
ț
ie
ș
i astfel, dacă îndepline
ș
te toate regulile stabilite, îl lăsam să

continue ac
ț
iunea făcută s au îl blocam. Middleware-ul mai poate fi folosit si pentru a spori

securitatea website-ului adăugând astfel în header-ele request-urilor diverse valori care pot fi

verificate la request-urile viitoare, astfel, dacă valorile respective nu corespund cu cele adăugate

de noi, putem sa ne dam seama că acel request nu este corect astfel încât îl putem stopa.

Fig. 12 Rutare cu middleware

2.8.3.3. Template-ul Blade

Este sistemul de template-ing preferat de Laravel pentru afi
ș
area paginilor în aplica
ț
ie.

Toate fi
ș
ierele de tip ‘Bla de’ sunt compilate în cod PHP
ș
i stocate în memoria cache până când

acestea sunt modificate, astfel aceste fi
ș
iere nu sunt generate on-the-fly ci sunt gata pentru a

putea fi folosite de aplica
ț
ie, ceea ce asigura performanta maximă. Fi
ș
ierele ‘Blade’ utilizează

extensia .blade.php
ș
i de obicei sunt salvate în directorul ‘resources/views’ din aplica
ț
ie. Acest

sistem i
ț
i oferă posibilitat ea de a crea layere care apoi le po
ț
i extinde în alte fi
ș
iere ‘Blade’, astfel

po
ț
i structura în mod eleg ant template-ul HTML.

23

Fig. 13 Exemplu de fisier ‘Blade’

2.8.3.4. Autentificarea si înregistrarea

Laravel oferă un sistem complet de autentificare a utilizatorului, doar cu o simplă comandă

‘php artisan make:auth’ i
ț
i crează tot sistemul de autentificare, care include:


rutarea, crearea de rute pentru înregistrare, logare
ș
i resetare de parolă


crearea de pagini cu formulare, care includ aceste ac
ț
iuni


tabelele MySQL necesare pentru stocarea informa
ț
iilor unui user


modelul care lucrează cu aceste tabele

Astfel în mai pu
ț
in de cât eva secunde ai un sistem foarte bine pus la punct de înregistrare a unui

utilizator.

2.8.3.5. Sistemul de cacheing

Laravel vine gata configurat cu un API care i
ț
i permite să folose
ș
ti printre cele mai comune

sisteme de cacheing pentru web. Toate aceste configura
ț
ii le putem găsi în fi
ș
ierul

‘config/cache.php’, unde putem opta pentru ce driver să folosim:


fi
ș
iere, toate datel e sunt stocate ca
ș
i obiecte serializate în sistemul de fi
ș
iere


MySQL, datele sunt salvate in tabela ‘cache’, la fel, ca si obiecte serializate


redis, acesta este favoritul meu


memcached

24

2.8.3.6. Sistemul de mailing

Laravel pune la dispozi
ț
ia dezvoltatorului un sistem simplu pentru configurarea API-ului

pentru trimiterea de mailuri, de la ter
ț
e, cum ar fi SwiftMailer, Mailgun, SParkPost, Amazon

SES până la serviciile standard ca SMTP
ș
i func
ț
ia de mail a PHP, ‘sendmail’, ceea ce vă

permite rapid trimiterea de mail-uri din aplica
ț
ie.

2.8.3.7. Queue

Acestea sunt foarte utile în momentul în care rezolvăm unele task-uri care necesita timp

foarte mare de execu
ț
ie sau când nu avem nevoie de răspunsul imediat al unor task-uri. Să ne

imaginam că utilizatorul nostru este într-o sec
ț
iune din site, în care trebuie să încarce câteva

imagini, care sunt procesate de server
ș
i care necesită resurse destul de mari. Astfel, după ce

utilizatorul urcă acele imagini, nu este necesar să a
ș
teptăm ca acele imagini să fie procesate, ci îl

redirec
ț
ionăm în următoa rea pagină
ș
i abia după ce procesul este finalizat, îl notificăm dacă este

cazul că acest proces a luat sfâr
ș
it. Avantajul este că dacă cumva a intervenit o eroare în

procesarea task-ului, noi putem seta pentru fiecare Queue de câte ori să reîncerce să finalizeze

acel proces. Dacă după aceste reîncercări tot nu a func
ț
ionat cu succes, tot acest proces este

salvat în DB, ca mai apoi, noi sa îl putem vizualiza mai târziu
ș
i după caz putem să rezolvam

problema.

2.8.3.8. Eloquent ORM

vAcesta oferă implementare simplă
ș
i utilă pentru lucrul cu bazele de date. Fiecărei tabele

de bază de date trebuie să îi atribuim un fi
ș
ier ‘Model’, prin care ORM-ul va
ș
ti să interac
ț
ioneze

cu acestea. Modelele ne permit să facem toate ac
ț
iunile necesare, să căutam, să inserăm, să

edităm sau să
ș
tergem din tabelele noastre.

2.8.3.9. Artisan

Artisan-ul este o interfata de linie de comanda inclusa in Laravel. Contine o varietate de

comenzi care te pot ajuta in construirea aplicatiei. De exemplu comenzi pentru crearea de rute,

25

modele, evenimente, managementul cache-ului. Pe langa comenzile prestabilite, iti ofera

posibilitatea de a-ti crea propriile comenzi, de exemplu poate vrem ca la fiecare deployment al

codului sa se trimită un mail tuturor developerilor, astfel de lucruri sunt realizabile cu ajutorul

Artisan.

2.9. MySQL

O bază de date este o aplica
ț
ie separată care stochează o colec
ț
ie de date. Fiecare bază de

date are unul sau mai multe API-uri distincte pentru crearea, accesarea, gestionarea, căutarea
ș
i

replicarea datelor pe care le de
ț
ine. În prezent, folosim sisteme de management al bazelor de date

rela
ț
ionale (RDBMS) pen tru stocarea
ș
i gestionarea volumului m are de date. Acestea se numesc

baze de date rela
ț
ionale d eoarece toate datele sunt stocate în tabele diferite, iar rela
ț
iile se

stabilesc utilizând chei primare sau alte chei cunoscute sub numele de chei externe.

MySQL este poate cel mai cunoscut sistem, open-source, pentru lucrul cu bazele de date

rela
ț
ionale. A fost dezvol tat de către echipa suedeza MySQL AB în 23 mai 1995, dar de ca
ț
iva

ani este de
ț
inut de către g igantul Oracle Corporation. MySQL are o istorie strâns legată de cea a

PHP, deoarece odată cu anvergura PHP-ului s-a dezvoltat
ș
i acest sistem, ajungând astăzi cel mai

folosit sistem pentru bazele de date. Nu este folosit compatibil doar cu PHP, ci API-ul MySQL

este disponibil pentru majoritatea limbajelor de programare, de la Python, Perl pânp la C sau

C++. Sunt foarte multe aplica
ț
ii/CMS-uri/Framework-uri care folosesc ca
ș
i driver default pentru

baza de date, MySQL-ul, printre care: Laravel, WordPress, Drupal, phpBB, Joomla. De

asemenea MySQL este folosit
ș
i în aplica
ț
ii foarte mari, cum ar fi Facebook, Twiter sau chiar

Youtube, am putea spune ca nu are limite, atâta timp cat structura bazei de date este creata

corect.

Principalele caracteristici a unei baze de date:


bază de date – este o colec
ț
ie de tabele, cu date aferente.

26


tabel

este
o
matrice
cu
date.
Un
tabel
într-o
bază
de
date
arată
ca
o
foaie
de
calcul

simplă.


coloană – con
ț
ine date de acela
ș
i tip.


redundan
ț
ă – stoca rea datelor de două ori pentru a face sistemul mai rapid.


cheie
primară

este
unică
ș
i
nu
poate
apărea
de
două
ori
într-un
singur
tabel.
Cu
o
cheie,

pute
ț
i găsi doar un rând.


cheie străină – este legătura dintre două tabele.


cheie
compusă

este
o
cheie
care
constă
in
mai
multe
coloane,
deoarece
o
coloană
nu

este suficient de unică.


index – permite unei interogări să preia eficient datele dintr-o bază de date.

Pentru
a
putea
lucra
mai
u
ș
or
cu
MySQL
am
folosit
programul
‘sequel
Pro’,
care
de
departe
este

cel
mai
bine
gândit
program
pentru
manageuirea
unei
baze
de
date
MySQL,
dar
care
este

disponibil
doar
pe
sistemul
de
operare
macOS.
Acesta
i
ț
i
permite
atât
conectarea
standard
(cu

user, parola si host), dar
ș
i conexiuni mai securizate, prin Socket sau prin SSH.

Fig. 14 – Conexiune MySQL in Sequel Pro

27

4. Implementarea temei de proiect

fdsfsdfs

28

5. Bibliografie

[1] –

https://en.wikipedia.org/wiki/MacOS

[2] –

https://www.sublimetext.com/

[3] –

https://en.wikipedia.org/wiki/PHP

[4] –

https://laravel.com/docs/5.6

[5] –

[6] –

[7] –

[8] –

[9] –

[10] –

[11] –

[12] –

29

30

Similar Posts