logo

Τι νέο έρχεται στην PHP 8

04/02/2020
Image Source

Στο τέλος του 2020 αναμένεται η νέα μεγάλη έκδοση της PHP. Αυτή τη στιγμή βρίσκεται στην 7.4.2 και αναμένεται η PHP 8.

Κάποια από τα βασικά χαρακτηριστικά της νέας έκδοσης θα είναι τα παρακάτω. (φυσικά είναι ακόμη σε ανάπτυξη, οπότε πολλά μπορούν να αλλάξουν)

Union Types: Μπορεί να δηλωθεί μια μεταβλητή σαν πολλαπλός τύπος. π.χ:

private int|float $number;

JIT (Just In Time) compiler: Αν και η PHP είναι interpreted γλώσσα, με τον JIT θα κάνει compile μέρη του κώδικα και θα τα κρατάει στην cache. Έτσι την επόμενη φορά θα τρέξει τα compiled κομμάτια. Με αυτόν τον τρόπο θα έχει πολύ καλύτερες επιδόσεις στην ταχύτητα εκτέλεσης.

Static return type: Επιστροφή μιας μεθόδου σαν static object. π.χ.

class Test {
    public function createFromWhatever($whatever): static {
        return new static($whatever);
    }
}

Weak Maps: Κάνει garbage collection σε objects που έχουν αναφορές μόνο στην cache, πράγμα που δεν μπορούσε να κάνει πριν.

::class on objects: Επιστρέφει το όνομα της κλάσης στην οποία ανήκει ένα αντικείμενο. π.χ:

$object = new stdClass;
var_dump($object::class); // "stdClass"

Create DateTime objects from interface: Μετατροπή των DateTime και DateTimeImmutable, από το ένα στο άλλο. π.χ:

DateTime::createFromInterface(DateTimeInterface $other);

DateTimeImmutable::createFromInterface(DateTimeInterface $other);

Consistent type errors for internal functions: Οι functions που γράφει ο χρήστης επιστρέφουν type error, όταν εισαχθεί λάθος τύπος δεδομένων. Οι εσωτερικές όμως επιστρέφουν ένα warning και null. Πλέον θα επιστρέφει type error και στις εσωτερικές. π.χ:

declare(strict_types=1);
var_dump(strlen(new stdClass));
// TypeError: strlen() expects parameter 1 to be string, object given

The @ operator no longer silences fatal errors: Με το @ έκρυβες τα fatal errors. Πλέον δεν θα γίνεται αυτό. Πρέπει να μπει το display_errors=Off στους production servers για να μην εμφανίζονται τα errors.

Πηγή: stitcher.io

Write your comment

rocean (at) error.gr
rocean
error.gr
feed