Învăţăm PHP: Ghilimele sau apostrofuri?


Într-un comentariu recent, Laur întreba dacă nu cumva e de preferat să folosim apostrofuri în loc de ghilimele. Continua el: asta ar reduce durata de execuţie a codului? La o primă privire poate părea hilar: că pui un apostrof, că pui două (adică ghilimele), ele sunt un singur caracter în cod. Şi totuşi… diferenţa apare la execuţie, nu la cantitatea de apostrofuri. Vă propun să pornim de la un cod pe care să discutăm câteva lucruri importante:

[PHP]$nume=”Ionel”;
echo „Fisa postului
„;
echo ‘Date de baza
‘;
echo „Numele angajatului: $nume.
„;
echo ‘Numele angajatului: $nume.
‘;
echo „Este ‘foarte’ destept.
„;
echo „Este \”foarte\” priceput.
„;
echo „aaa / \\ bb”;[/PHP]

Vă pun în continuare rezultatul afişat de acest cod:

[HTML]Fisa postului
Date de baza
Numele angajatului: Ionel.
Numele angajatului: $nume.
Este ‘foarte’ destept.
Este „foarte” priceput.
aaa / \ bb[/HTML]

Să discutăm acum codul, linie cu linie. La prima nu avem ce spune :) . Dar care este diferenţa între linia 2 şi linia 3. La prima am folosit ghilimele, la a doua apostrofuri. Aceeaşi Mărie cu altă pălărie? Aproape. Reţineţi o diferenţă importantă: când PHP întâlneşte ceva scris între ghilimele, se aşteaptă că trebuie să evalueze conţinutul; când întâlneşte ceva scris între apostrofuri nu mai face acest efort ci pur şi simplu redă ce este între apostrofuri. Evident, în ambele cazuri nu este nimic de evaluat, dar interpretorul PHP va trebui să verifice la linia 2 dacă nu e ceva de evaluat… aşa că va consuma ceva mai mult timp decât cu linia 3, unde nu are bătăi de cap, ştie clar că trebuie să afişeze şi gata. Acum evident, între execuţia liniei 2 şi a liniei 3 nu veţi sesiza cu ochiul diferenţe. Dacă veţi săpa pe net există studii pe această temă, iar concluziile ne spun că la coduri de mii de linii, folosirea cu cap (când apostrofuri, când ghilimele) poate aduce o oarecare optimizare a paginii.

Ca să vedem totuşi cu ochii noştri diferenţa, am pus liniile 4 şi 5. Par foarte similare, nu? Dar rezultatele sunt foarte diferite. În primul caz avem ca rezultat „Numele angajatului: Ionel”, iar în al doilea caz „Numele angajatului: $nume” (evident fără ghilimele). Diferenţa vine de la folosirea mai întâi a ghilimelelor (interpretorul spune: „a!!! aici poate am ceva de calculat!!! uite, am găsit variabila $nume, am să o înlocuiesc cu valoarea ei!”), respectiv a apostrofurilor (interpretorul spune: „nu am bătăi de cap aici, ce e între apostrofuri asta afişez şi basta!”). Morala?

  • Dacă avem de afişat un text, 100% text, e bine să folosim apostrofuri. La o aplicaţie foarte-foarte complexă se va simţi la execuţie. În rest nu se simte.
  • Dacă avem o combinaţie de text şi variabile, atunci putem folosi apostrofuri şi concatenarea cu punct (ex: echo ‘Numele angajatului: ‘.$nume;) sau mai simplu cu ghilimele şi variabila chiar în cadrul textului, între ghilimele (ex: echo „Numele angajatului: $nume”;).

În fine, revenind la codul de la începutul materialului, avem acolo situaţia combinaţiilor. Dacă avem ceva între ghilimele, între ele poate apărea unul sau mai multe apostrofuri (linia 6). Şi invers: între apostrofuri poate să apară una sau mai multe ghilimele. Dar între ghilimele nu putem pune alte ghilimele, decât dacă le prefaţăm cu backslash, adică \ (linia 7). Şi pentru apostrofuri la fel. În fine, dacă într-un text vrem să apară backslash, pur şi simplu îl dublăm (linia 8). O apariţie de backslashuri consecutive în număr impar va genera eroare.

Am acoperit nişte situaţii mai speciale, dar cred că sunt lucruri utile. Putem merge mai departe.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (3 evaluări, media: 5,00 din 5)
Loading...Loading...

1 comentariu

  1. Foarte folositor, ca si intotdeauna. Explicat scurt si clar care e treaba cu ghilimelele. Multumesc mult!


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *