-
Gata, razboiul s-a terminat, PHP7 s-a lansat, iar PHP6 va ramane doar o legenda, o poveste a versiunii care nu a existat.
Dupa o vreme nu cred ca se mai astepta nimeni sa apara, au trecut totusi aproape 10 ani, dintr-un total de 20 de ani de viata pentru PHP.
Dar cum se poate ca o versiune atat de asteptata sa nu apara de loc?
Sa incepem cu inceputul, cand, acum aproximativ 10 ani, PHP devenea un limbaj “serios”. Dupa versiunea PHP5, model obiectual avea in sfarsit vizibilitate specifica pentru metode si proprietati, obiectele nu mai erau copiate, ci trimise prin referinta. Aceste facilitati au generat o multitudine de framework-uri obiectuale, care acum erau destinate si mediului enterprise, nu doar pentru site-uri micute.
In tot acest context exista o problema, internationalizarea.
Asa a aparut PHP6, trebuia sa fie un limbaj care sa foloseasca nativ Unicode, mai specific UTF-16. Asa totul se va procesa intr-un format unic si international.
Proiectul a fost pornit si intretinut de Andrei Zmievski. Poate astazi nu multi au auzit de Andrei, dar acum 10 ani era foarte popular pentru proiecte precum Smarty si PHP-GTK.
Dupa cativa ani proiectul a ramas intepenit, iar atunci a aparut PHP5.3. Acesta, desi aducea schimbari importante, nu era o versiune majora pentru ca inca mai era speranta ca intr-o zi va fi un PHP6.
Existau totusi niste oameni plini de speranta! Si mai ales, care au fost gata sa monetizeze speranta!
Fie ca unii au fost autori, iar altii editori, ei stiau un lucru legat de carti (in special de cele tehnice) ca au niste lucruri clare: un public tinta si o perioada in care este relevanta.
Dar sa analizam si niste rezultate.
PHP 6 and MySQL 5 for Dynamic Web Sites: Visual QuickPro Guide (3rd Edition) (Peachpit Press – 2008) – Larry Ullman
Larry a scris mai multe carti, printre care: “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide (2nd Edition)” si evident “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide”.
Intamplator am avut ocazia sa rasfoiesc toate cele 3 carti, dar nu in ordinea cronologica ci pur intamplator am inceput cu “PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide (2nd Edition)”. Ce e interesant este ca similitudinea este izbitoare, practic a pus un 6 in titlu si in rest aproape ca nu a schimbat cartea de loc.
In general toate cartile Visual QuickPro Guide sunt carti pentru incepatori, iar de la o editie la alta lucrurile nu se schimba prea mult, doar se adapteaza.
Professional PHP6 (Wrox 2009) – Ed Lecky-Thompson, Steven D. Nowicki (Thomas Myer)
Interesant este ca in imagine apar 3 persoane, dar pe Amazon.com si pe Wrox apar doar doua nume, de asta am tinut sa-l trec separat, este vorba de Thomas Myer.
Ma intreb oare daca Thomas Myer a cerut sa dispara, sau a fost scos? E bizar sa ai numele pe o carte dar sa nu apari in lista de autori pe site-ul editurii.
Nu intamplator exista si o “Professional PHP5” – Ed Lecky-Thompson, Heow Eide-Goodman, Steven D. Nowicki, Alec Cove.
PHP 6/MySQL Programming for the Absolute Beginner (Cengage Learning PTR – 2008) – Andrew B. Harris
Este intradevar o carte bizara, nu exista un echivalent de PHP5, ba chiar pe site-ul scriitorului nu mai exista alta carte de PHP: .
Exista oare un motiv? In cazul lui Larry Ullman era un alt subiect atins, un alt public tinta, dar in acest caz e doar ciudat, un singur autor, o singura carte de PHP si intr-o versiune fantoma, publicata in 2008.
PHP 6 Fast and Easy Web Development (Cengage Learning PTR – 2008) – Matt Telles, Julie C. Meloni
Fara prea multa dificultate am gasit si: “PHP Fast & Easy Web Development” – Julie C. Meloni
Ciudatenia acestei carti este ca Matt Telles nu mai are alta carte de PHP, desi are de Python, C# si C++.
Ceva imi spune ca poate el a fost adus doar ca sa actualizeze cartea originala la noul context. Am crezut ca este doar o parere presonala, doar ca la o cautare pe Google am gasit ca este si Technical Reviewer pentru “PHP 6/MySQL Programming for the Absolute Beginner (Cengage Learning PTR)”, carte care a fost prezentata anterior.
Beginning PHP 6, Apache, MySQL 6 Web Development (Wrox – 2009) – Timothy Boronczyk, Elizabeth Naramore, Jason Gerner, Yann Le Scouarnec, Jeremy Stolz
Cartea originala a fost evident: “Beginning PHP, Apache, MySQL Web Development” – Michael K. Glass, Yann Le Scouarnec, Elizabeth Naramore, Gary Mailer, Jeremy Stolz, Jason Gerner
Au iesit Michael K. Glass si Gary Mailer, iar in locul lor a intrat Timothy Boronczyk.
PHP a fost un limbaj foarte la moda in perioada respectiva, iar PHP6 a fost foarte asteptat.
Cum se poate totusi asta? Cum se poate sa existe atatea carti de la edituri importante pentru un limbaj de programare care nu a existat? Raspunsul este simplu: lacomie.
Exista doua explicatii posibile: ori autorul a incercat sa acapareze piata cu o noua versiune, ori editura a vrut sa forteze nota, in speranta de a capta piata. Probabil speranta era ca in momentul cand ar fi aparut, ar fi avut cartile deja disponibile pentru livrare.
Acesta este un alt motiv pentru care nu era un plan bun ca versiunea PHP NG sa devina PHP6, ar fi insemnat sa apara o versiune de PHP si sa aiba deja o serie de carti scrise, ba chiar scrise de cativa ani.
Pun pariu ca atunci cand s-a votat intre PHP6 si PHP7 erau niste editori plini de speranta.
In continuare, va urez lectura placuta!
-
A mai trecut un an fara suport nativ de unicod in PHP. Da, nu a aparut inca PHP6, in caz ca cineva chiar se mai intreba asta…
In schimb, versiunea care a aparut este PHP 5.4. Cu aceasta versiune cred ca nu au fost adaugate decat lucruri de finete, nu mai e o schimbare asa de mare cum a fost in cazul PHP 5.3. In PHP 5.4, schimbarea majora o reprezinta traits si, favorita mea, noua varianta de closure.
Dupa cum anul trecut cuvintele cheie au fost Drupal si Magento, anul acesta cuvantul cheie a fost doar Magento.
Acum doua luni, mai mult fortat de imprejurari, am sustiunut examenul de certificare pentru Magento Plus. Pentru aceasta certificare, angajatorul meu, Optaros, a avut o influenta majora. Am fost mai mult sau mai putin obligat sa-l sustin si alaturi de asta a trebuit si sa facem parte dintr-un study group organizat de companie.
Nu am mai facut parte dintr-un study group din facultate si trebuie sa recunosc ca uitasem utilitatea lui. Cei care aveau mai multa experienta cu Magento (fata de mine care am putin mai mult de un an), au ajutat foarte mult la clarificarea unor probleme si la documentarea lor.
Dar mai multe despre asta intr-un alt blog, care va urma curand (sper)…
Oricum, dupa ce a trebuit sa studiez atat de in detaliu Magento, trebuie sa recunosc ca am mult mai mult respect pentru platforma. Dupa ce analizezi arhitectura din spate, incepi sa percepi altfel lucrurile. Arhitectura este foarte interesanta si destul de flexibila, lucru care te face sa treci cu vederea unele neajunsuri.
Acum ca a inceput un nou an, imi doresc sa public mai mult, cred ca in ultima perioada nu am fost foarte “productiv” cand vine vorba de publicat, fie ca este text sau cod.
Si anul acesta mi-am propus sa sustin cel putin un examen de certificare. Cum certificarea de Magento era in plan de abia pentru anul acesta, inca mai am optiuni pe lista.
Cam atat despre 2012 si planurile pentru 2013.
Va doresc un 2013 extraordinar!
-
A devenit o traditie pentru mine sa incep retrospectiva anuala cu acest subiect.
PHP 6 este la fel de aproape de lansare cum era si anul precedent, sau acum doi ani, adica lipsit de perspectiva. In 2011, PHP 5.4 a ajuns la RC4 si probabil se va lansa in curand versiunea finala, lucru care inseamna ca inca nu se previzioneaza o data pentru lansarea PHP 6. Dar despre PHP 5.4 cu alta ocazie, este pe lista mea de “TODO” sa vad ce a ajuns in RC4.
Cum in PHP 5.3 cuvintele cheie pentru mine au fost namespaces, Anonymous functions, closures si garbage collector, in PHP 5.4 se pare ca aceste cuvinte cheie vor fi traits, din nou closures si scalar type hinting, alaturi de multe alte noutati.
Cand am scris primul meu blog anual despre PHP 6, lucram in principal la site-uri in romana, de acolo si dorinta mea pentru o versiune care sa suporte in mod nativ aceasta limba sau oricare alta fara nici o modificare. Pe atunci lucram in cea mai mare parte direct cu limbajul, de cele mai multe ori fara sa folosesc un framework . Dar de atunci a trecut mult timp si mutle lucruri s-au schimbat, acum folosesc aproape exclusiv framework-uri si platforme care m-au indepartat de limbaj oferindu-mi o noua perspectiva arhitecturala.
Dupa mai bine de un an in cadrul NCH, am decis ca este timpul pentru o schimbare. Si de data asta este vorba tot de o corporatie venita din state cu o sucursala in Romania. De data asta este vorba de Optaros. Desi nu intentionam sa-mi schimb locul de munca, am dat curs unei invitatii la interviu si pe scurt, am plecat. De mult simteam nevoia sa lucrez din nou pentru clienti externi, dupa experienta NCH unde toate proiectele erau interne, simteam nevoia de o schimbare.
Din nou proiectele sunt si mai mari, cu alte probleme de scalabilitate. Dar cred ca asta face web development-ul atat de interesant, cu cat ai probleme mai mari de scalabilitate, cu atat inseamna ca lucrezi la un proiect mai mare.
Anul trecut cuvintele cheie au fost Linux si Symfony framework. Pentru anul care tocmai s-a incheiat cuvintele cheie probabil au fost: Magento si Drupal.
Dupa o scurta perioada de lucru cu Magento, pot spune ca mi se pare incredibil cum o platforma atat de mare are atat de putina documentatie si de multe ori atat de multa inconsistenta. Este o plaforma foarte complexa cu care poti face foarte multe lucruri, dar cand vine vorba de documentatie, se pare ca abordarea se rezuma la a analiza core-ul. Venind din lumea Symfony, unde exista literalmente carti intregi de documentatie, puse la dispozitie in mod gratuit, mi se pare incredibil cat de putina si descentralizata documentatie este pentru Magento. Dar de asemenea este un subiect pentru un alt blog. Cred ca aici echipa Optaros m-a ajutat destul de mult ca sa inteleg cum sa abordez problemele.
Un alt eveniment important pentru mine acest anul trecut a fost Yahoo! Open Hack Day, eveniment tinut si in Romania in 2011. Nu stiu daca am mai vazut atata entuziasm si energie intr-un singur loc, intr-o singura zi. Pentru mine ca programator a fost o experienta de neuitat, unul din momentele care m-au facut sa-mi aduc aminte de ce am ales aceasta profesie.
In acest an am dat si examenul de certificare pentru PHP 5.3, chiar la inceptului anului. Examenul nu a fost atat de greu cum ma asteptam, desi se pare ca emotiile raman neschimbate. Faptul ca am mai sustinut un examen m-a ajutat mult, incredibil cat de multe lucruri iti aduci aminte cand le recitesti. Anul trecut mi-am propus sa sustin cel putin un examen de certificare pe an, deci trebuie sa incep pregatirile pentru urmatorul examen.
Concluzionand, 2011 a fost un an bun, plin de realizari si provocari, chiar daca nu am bifat foarte multe lucruri pe rezolutia de an, am realizat si multe lucruri care nu erau pe ea. Dar acum este timpul pentru o noua rezolutie de an.
Iar acum va urez un 2012 mai bun si mai plin de realizari! La multi ani!
-
Acum trei zile, adica pe 28-06-2011 a fost anuntat pe ww.php.net versiunea PHP 5.4 alfa 1!
Practic in aceasta versiune sunt inglobate ultimele lucruri care au fost realizate pentru PHP 6 si nu au apucat sa intre in PHP 5.3, alaturi de alte cateva lucruri noi.
Unele din cele mai interesante faclitati noi:
Traits
Un nou feature de OOP. Practic se folosesc pentru refolosire orizontala de cod, adica mostenire de metode in loc de extiderea de clase.
1trait Inharitable { 2 public function test() { 3 echo 'Class: ' . __CLASS__ . ' Method: ' . __METHOD__ . PHP_EOL; 4 } 5} 6 7class A { 8 use Inharitable; 9} 10 11class B { 12 use Inharitable; 13} 14 15$a = new A(); 16$a->test(); //Class: Inharitable Method: Inharitable::test 17 18$b = new B(); 19$b->test(); //Class: Inharitable Method: Inharitable::test
Trait-urile din PHP 5.4 sunt practic noile namespace-urile din PHP 5.3, adica cea mai interesanta facilitate din PHP 5.4.
Scalar type hinting
Pana la PHP 5.3 nu exista type hinting decat pentru clase, interfete si array-uri. Acum se va putea face type hinting si pe tipuri scalare de date cum ar fi: int, string, float, bool si resource.
1function test(string $var) { 2 echo $var; 3} 4 5$a = 'aa'; 6test($a);
Din pacate pe versiune alfa instalata la mine pe calculator primesc: Catchable fatal error: Argument 1 passed to test() must be an instance of string, string given, called in .. on line 58 and defined in … on line 52
Ce pot spune… e inca alfa…
Closures
Da, stiu, exista si in PHP 5.3, dar e incomparabil. In PHP 5.3 daca vroiau un closure trebuia sa folosesti cuvantul use iar apoi sa specifici variabilele la care functia lambda va avea acces.
In PHP 5.4 incepe sa arate mai mult a JavaScript, in sensul bun:
1class closureTest { 2 3 private $a; 4 5 function test() { 6 $this->a = 'object var'; 7 return function () { 8 echo $this->a; 9 }; 10 } 11} 12 13$a = new closureTest(); 14$b = $a->test(); 15$b(); // object var 16unset($a); 17$b(); // object var
Closure in adevaratul sens al cuvantului cu lambda functions asa cum ar trebui sa fie! Asa cum si lambda functions existau si inainte de PHP 5.3, dar de abea dupa ce a aparut noua sintaxa au devenit populare, acum era vremea pentru closures.
Acestea sunt lucrurile care mi se pare cele mai interesante, dar sunt doar o parte din ce aduce nou PHP 5.4!
Este foarte probabil ca pana la finalul anului sa apara si versiunea finala.
Sunt curios daca o data cu PHP 5.4 va aparea si o noua certificare, avand in vedere ca schimbarile nu sunt totusi atat de majore.
-
A mai trecut un an iar PHP 6 nu va veni.
De 2 ani astept PHP 6, cred ca a devenit mai mult un blog traditional cu care sa inchei anul.
PHP 6 nu va mai veni pentru ca trunk-ul a fost abandonat si refacut dintr-unul de 5.3.
In alta ordine de idei PHP 5.3 castiga popularitate. Frameworkuri precum Zend Framework si Symfony pregatesc pentru anul 2011 cate o versiune in 2.0 care va avea nevoie de PHP 5.3+. Chiar si CodeIgniter, un framework traditional PHP 4, va necesita o data cu versiunea 2.0 minim PHP 5.1.6.
Mai mult, certificarea oficiala Zend pentru PHP este mai nou ZCE 5.3, iar aceasta devine destul de populara, chiar daca a fost lansata doar cu cateva luni in urma.
Dar un nou an se incheie si este timpul sa bifam realizariile din rezolutia de anul trecut si sa o scriem pe urmatoarea.
Anul trecut am terminat masterul, cu asta am incheiat mult prea multi ani de scoala decat imi doresc sa calculez. De fapt aceasta este prima iarna cand nu sunt intr-o forma de invatamant, poate de asta mi se pare ca am ceva mai mult timp liber :).
Am schimbat locul de munca, iar cu asta am fost fortat sa folosesc cateva lucruri care erau pe lista de TODO de ceva vreme:
- Linux
- Symfony Framework Linux era un subiect in jurul caruia ma invart inevitabi de destul de multi ani, fara sa-l aprofundez de loc. A fost mereu pe lista mea de “todo”, dar niciodata nu am avut atata rabdare ca sa intru in detalii cu el sau nu am avut continuitate atunci cand am facut-o. Cand am ajuns la noul loc de munca m-am trezit in fata unui calculator cu Ubuntu si un pic de panica m-a cuprins.
Dupa cateva luni am facut un nou pas, pentru prima data in viata mea am fost la un curs profesional. Cursul era organizat de Info Academy. Platit din buzunarul meu si usor suprapus cu programul de lucru. Dar am ajuns la concluzia ca trebuie sa-l fac. Probabil nu suna ca mare lucru, dar pentru mine care sunt in general autodidact a fost destul de ciudat. Acum ca s-a terminat pot spune ca a fost o foarte buna investitie si il recomand.
Undeva pe parcursul cursului mi-am dat seama ca e timpul sa mai fac cate un boot in linux si acasa. Urmatorul pas a fost reconfigurarea boot managerului sa booteze direct in linux. Acum, dupa ce folosesc aproape exclusiv linux, am ajuns la concluzia ca este suficient de user friendly incat sa fie o alternativa reala pentru Windows.
Symfony framework este alt subiect prafuit pe lista de “todo”. Desi am mai abordat CodeIgniter si Zend Framework, de Symfony nici macar nu m-am apropiat pana anul trecut. Se simte diferenta fundamentala de concept dintre ZF si Symfony, iar eu am simtit-o pe pielea mea. Acesta a fost alt motiv de panica pentru mine la noul loc de munca, pana la urma “all frameworks suck”.
Nu este un framework usor de invatat din pricina conceptelor, dar acum sunt de parere ca merita. Ce-mi place cel mai mult la acest framework este generarea de CRUD, care se face foarte usor si totusi este foarte puternica si flexibila. De asemenea flosirea fisierelor YML, care se pare ca au fost preluate de la Ruby on Rails, este o alternativa mult mai buna la fisierele ini care sunt suportate nativ in PHP.
Ca sa concluzionez, 2010 a fost un an bun, cu multe realizari, chiar daca nu am bifat totul pe rezolutia de anul trecut, cred ca am bifat destule.
Iar acum va urez un an 2011 mai bun si plin de realizari! La multi ani!