PHP 5.4

Michał Pipa
20 września 2012

O mnie

Historia najnowsza języka PHP

30 czerwca 2009
Wydanie 5.3.0
16 grudnia 2010
Wydanie 5.2.16 (ostatnie wydanie 5.2)
1 marca 2012
Wydanie 5.4.0
13 września 2012
Wydanie 5.4.7

Co zostało usunięte?

Co zostało dodane?

Array dereferencing

<?php

function foo() {
  return array(1, 2, 3);
}

echo foo()[2];
<?php

$foo = function() {
  return array(1, 2, 3);
};

echo $foo()[0];

Dostęp do składowych klasy przy tworzeniu obiektu

(new Foo)->bar()
(new Foo)->bar

Short array syntax

$array = [1, 2, 3, 4];

$array = array(
    "foo" => "bar",
    "bar" => "foo",
);

$array = [
    "foo" => "bar",
    "bar" => "foo",
];

Traits

Traity umożliwiają ponowne użycie kodu w językach z dziedziczeniem jednobazowym.

Traits

trait ezcReflectionReturnInfo {
    function getReturnType() { /*1*/ }
    function getReturnDescription() { /*2*/ }
}

class ezcReflectionMethod extends ReflectionMethod {
    use ezcReflectionReturnInfo;
    /* ... */
}

class ezcReflectionFunction extends ReflectionFunction {
    use ezcReflectionReturnInfo;
    /* ... */
}

Traits

class Base {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait SayWorld {
    public function sayHello() {
        parent::sayHello();
        echo 'World!';
    }
}

class MyHelloWorld extends Base {
    use SayWorld;
}

Traits

trait Hello {
    public function sayHello() {
        echo 'Hello ';
    }
}

trait World {
    public function sayWorld() {
        echo 'World';
    }
}

class MyHelloWorld {
    use Hello, World;
    public function sayExclamationMark() {
        echo '!';
    }
}

Traits

trait A {
    public function smallTalk() {
        echo 'a';
    }
    public function bigTalk() {
        echo 'A';
    }
}

trait B {
    public function smallTalk() {
        echo 'b';
    }
    public function bigTalk() {
        echo 'B';
    }
}

Traits

class Talker {
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
    }
}

class Aliased_Talker {
    use A, B {
        B::smallTalk insteadof A;
        A::bigTalk insteadof B;
        B::bigTalk as talk;
    }
}

Wbudowany serwer

$ php -S localhost:8000
PHP 5.4.8-dev Development Server started at Thu Sep 20 04:13:04 2012
Listening on http://localhost:8000
Document root is /tmp
Press Ctrl-C to quit.

Wbudowany serwer

$ php -S localhost:8000 router.php
router.php
<?php
if (preg_match('/\.(?:png|jpg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;
} else {
    echo "<p>Welcome to PHP</p>";
}
?>

Wbudowany serwer

Nie należy korzystać z tego serwera w środowisku produkcyjnym!

Pozostałe nowości

Pozostałe nowości

Poprawiona wydajność

Zmiany w procesie wydawania PHP

Migracja na Gita

Proces tworzenia nowych wydań

Pytania

Dziękuję za uwagę