PHP 5.4 Alpha 1 este aici!
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.