Ce trebuie sa stiti
In timp ce programatorii PHP incep sa descarce si sa testeze cea mai mare modifcare adusa limbajului de programare din ultimii 7 ani, multi nu se intreaba despre noile 'jucarii' de folosit in dezvoltarea aplicatiilor de maine, ci despre modificarile aduse limbajului de programare care vor afecta aplicatiile de ieri.Vestea cea buna este ca daca v-ati tinut aplicatia in ton cu modificarile aduse limbajului, sunt putine modificari care va vor afecta. Vestea cea rea este ca pe masura ce va indeparatati de versiunea curenta portarea aplicatiilor devine din ce in ce mai grea.
Ceea ce urmeaza nu este o lista de noi functionalitati din PHP 5.3, puteti gasi destule referinte bune in spatiul web pentru informare. Acest articol este o sinteza a manualului de migrare la PHP 5.3. Vom acoperi acele subiecte care afecteaza continuitatea ramurii 5.x.
Functii de procesare a vectorilor
Inainte de PHP 5.3, multe din functiile folosite la procesarea vectorilor puteau primi ca parametrii un obiect sau un vector. Din PHP 5.3 multe din aceste functii vor putea primi doar vectori. Daca doriti accesarea unei proprietati din obiecte cu una din urmatoarele functii, va trebui sa le convertiti la array in prealabil.
- natsort()
- natcasesort()
- usort()
- uasort()
- uksort()
- array_flip()
- array_unique()
Modificari în functiile magice
Inainte de 5.3 metodele magice puteau fi declarate cu orice modificator de vizibilitate.
- __get()
- __set()
- __isset()
- __unset()
- __call()
Din PHP 5.3 aceste metode trebuie declarate publice, si nu pot fi statice.
Considerate depasite
PHP are o lista de functii care au fost marcate pentru a fi eliminate din limbaj. Majoritatea acestor functii nu au o folosire comuna, dar ar fi utila o verificare a lor. Functiile marcate pentru eliminare sunt:
- call_user_method()
- call_user_method_array()
- define_syslog_variables()
- ereg()
- ereg_replace()
- eregi()
- eregi_replace()
- set_magic_quotes_runtime()/magic_quotes_runtime()
- session_register()
- session_unregister()
- session_is_registered()
- set_socket_blocking()
- split()
- spliti()
- sql_regcase()
In plus, cateva din directivele php.ini au fost marcate pentru eliminare. Daca sunt activate ele vor emite un avertisment de nivel E_DEPRECATED:
- define_syslog_variables
- register_globals
- register_long_arrays
- safe_mode
- magic_quotes_gpc
- magic_quotes_runtime
- magic_quotes_sybase
Cum orice emite un mesaj E_DEPRECATED va fi eliminat la urmatoarea versiune majora a limbajului, acestea sunt niste indicii pentru programatori - la ce sa se uite pentru trecerea la PHP 6.
Reconsiderare
In PHP 5.0, functia is_a() a fost marcata pentru eliminare in favoarea operatorului instanceof, si totusi nu a fost eliminata din limbaj. In PHP 5.3, aceasta decizie a fost reconsiderata, iar apelul catre functia is_a() nu mai emite un mesaj E_DEPRECATED.
Cuvinte rezervate
Au fost adaugate doua noi cuvinte rezervate
Avand in vedere natura acestor cuvinte este putin probabil ca ele sa existe in codul provenit din versiunile vechi ale limbajului. Totusi este o idee buna sa va scanati codul pentru aceste cuvinte rezervate. Daca exista, ele vor genera erori de parsare. Nu pot fi folosite ca nume de functii, clase etc.
Concluzie
Ghidul migrarii catre PHP 5.3 poate fi gasit in documentatia de pe php.net. Nu sunt multe elemente din PHP 5.3 care sa impiedice un cod bine scris in PHP 5.x sa functioneze in versiunea 5.3. Aceasta noua versiune vine mai mult cu adaugiri la limbaj.
Multumiri
De cele mai multe ori se trece peste aprecierea si multumirea celor care au contribuit la dezvoltarea PHP-ului, dar noi nu vom trece mai departe fara a face acest lucru. Multumim intregii echipe care si-a dedicat timpul pentru crearea si imbunatatirea PHP-ului!
Acest articol este o traducere a articolului Migrating to PHP 5.3.0 aparut in techPortal.
Raspunde #1 | billybob | 27-01-2010
Rezonez. Multumim intregii echipe pentru crearea si imbunatatirea Php !
Raspunde #2 | M | 17-03-2012
Foarte bine documentat articolul. In orice caz, inainte de a cumpara o gazda (si probabil si un domeniu) va puteti interesa ce distributie de php au. Eu am lucrat pentru niste tipi din Irlanda si serverele lor suportau doar php 4 (nu mai zic, ca nu exista niciun cPanel .. ci o interfata praf .. facuta de ei probabil). Tot ce se poate face in acest caz este rabdare si mult cod procedural (nici vorba de clase oop sau vreun framework :) ). Bafta in continuare!