PHP 5.4 już dostępne

Wiadomość dodana: 02 marca 2012.

Najważniejszą poprawką która z całą pewnością ucieszy zwłaszcza administratorów serwerów (o ile zdecydują się tak szybko na aktualizację) jest usprawniony Zend Engine – teraz znacznie lepiej zarządza pamięcią, co skutkuje mniejszym jej zużyciem oraz szybszym parsowaniem kodu. Oznacza to iż na identycznej maszynie będzie można obsłużyć więcej żądań. Wraz z nową wersją pojawia się również wbudowany webserver (php -S localhost:8000). Oczywiście nie nadaje się do zastosowań produkcyjnych a wyłącznie szybkiego testowania naszego kodu. Usunięto kilka funkcji od dawna oznaczonych w dokumentacji jako “deprecated” choć stosowanych zwłaszcza przez początkujących. Mowa tutaj o register_globals, register_long_arrays, magic_quotes_gpc, magic_quotes_runtime, allow_call_time_pass_reference i tak zwanym trybie bezpiecznym (safe mode). Ten ostatni można zastąpić poprawną konfiguracją, nadaniem odpowiednich uprawnień uzytkownikom do plików i / bądź chrootem w połączeniu z fastcgi lub projektem PHP-FPM. Oprócz tego wprowadzono wiele udogodnień za które PHP było od dawna krytykowane. Są wśród nich:

Bezpośredni dostęp do metod podczas tworzenia obiektu

$myClass = (new Person)->setName('Jan')->setAge(45);

Dotychczas zapisywane jako

$myClass = new Person();
$myClass->setName('Jan')->setAge(45);

Nowa składnia do tworzenia tablic

$a = [1, 2, 3];
$b = ['kolor' => 'czerwony', 'owoc' => 'jabłko'];

Dereferencja tablic (array dereferencing)

function owoc () {
    return array('a' => 'jabłko', 'b' => 'banan');
}

echo owoc()['a'];

Co więcej poprawna będzie również składnia:

$object->method()[0]->secondMethod();

Cechy (traits)

Ogólną definicję cech możesz znaleźć na Wikipedii. W skrócie umożliwiają wielodziedziczenie:

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

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

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

 $o = new MyHelloWorld();
 $o->sayHello();
 $o->sayWorld();
 $o->sayExclamationMark();

Obsługa $this w domknięciach (closures)

class A {
    private $value = 1;

    function firstGetter($name) {
        return function() use ($name) {
            return $this->$name;
        };
    }

    function secondGetter() {
        return function($name)  {
            return $this->$name;
        };
    }
}

$a = new A();
$firstGetter = $a->firstGetter('value');
echo $firstGetter();
$secondGetter = $a->secondGetter();
echo $secondGetter('value');

Śledzenie postępu wgrywanych plików

<form action="upload.php" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="ourupload" />
    <input type="file" name="file1" />
    <input type="file" name="file2" />
    <input type="submit" />
</form>

Poprzez zmienną sesyjną $_SESSION[“upload_progress_ourupload”] jesteśmy w stanie śledzić postęp wgrywanego pliku.

Wartości binarne bezpośrednio w kodzie PHP

$x = 0b001110;
echo $x;

Oprócz tego tablica $GLOBALS inicjowana jest dopiero podczas pierwszego użycia, domyślnie włączono opcję –enable-zend-multibyte, usunięto składnię break/continue $var, niezależnie od ustawien “short_open_tag” dostępna jest zawsze składnia <?= oraz wiele innych. Pełną listę nowości można obejrzeć na stronie PHP. Zapraszam do aktualizacji.

Komentarze

Nie ma jeszcze żadnych komentarzy do wyświetlenia. Może chcesz zostać pierwszą osobą która podzieli się swoją opinią?

Dodaj komentarz

*
Nazwa zostanie wyświetlona wraz z komentarzem. Możesz też utworzyć nowe konto w serwisie, dzięki czemu uzyskasz dodatkową funkcjonalność.
*
Akceptowana jest ograniczona składnia Textile. Wszystkie tagi HTML zostaną usunięte.