Skip to content
Διάρκεια άρθρου: Λιγότερο απο 1 λεπτό Λεπτά

PHP 8.3: οι δυνατότητες και αλλαγές που αξίζει να γνωρίζεις

PHP 8.3 κυκλοφόρησε στις 23 Νοεμβρίου 2023, φέρνοντας βελτιώσεις που κάνουν τη γλώσσα πιο συνεπή και βοηθούν στον εντοπισμό λαθών. Δεν χαρακτηρίζεται από μεγάλες προσθήκες όσο από χρήσιμες αλλαγές στην καθημερινή ανάπτυξη εφαρμογών. Για τις ομάδες που σχεδιάζουν αναβάθμιση, ιδιαίτερα από εκδόσεις χωρίς υποστήριξη, το ζητούμενο είναι διπλό: να αξιοποιήσουν τις νέες δυνατότητες και να ελέγξουν συμπεριφορές που ενδέχεται να επηρεάσουν τον υπάρχοντα κώδικα.

Σταθερές με σαφείς τύπους
Μέχρι προηγουμένως, ο τύπος μιας σταθεράς προέκυπτε από την τιμή της. Η PHP 8.3 επιτρέπει πλέον τη ρητή δήλωση τύπου στις σταθερές κλάσεων. Αυτό έχει ιδιαίτερη σημασία για τις διεπαφές, τις αφηρημένες κλάσεις και την κληρονομικότητα, επειδή μπορεί να εμποδίσει μια υλοποίηση ή επέκταση να αλλάξει τον προβλεπόμενο τύπο. Παράλληλα, υποστηρίζεται η δυναμική πρόσβαση σε σταθερές κλάσεων και μέλη Enum, επεκτείνοντας μια δυνατότητα που υπήρχε ήδη για τις ιδιότητες.

Έλεγχος JSON με μικρότερες απαιτήσεις
Η νέα συνάρτηση json_validate() ελέγχει αν μια συμβολοσειρά περιέχει έγκυρο JSON, χωρίς να χρειάζεται να αποκωδικοποιηθεί ολόκληρη η δομή μόνο για αυτόν τον σκοπό. Η προηγούμενη προσέγγιση μπορούσε να καταναλώσει πολλή μνήμη όταν τα δεδομένα ήταν μεγάλα, ακόμη και πριν ξεκινήσει η ουσιαστική επεξεργασία τους. Η νέα λειτουργία προσφέρει πιο αποδοτικό έλεγχο και επιστρέφει μια λογική τιμή που δείχνει αν το περιεχόμενο είναι έγκυρο.

Περισσότερες επιλογές για τυχαίες τιμές
Η επέκταση Random αποκτά νέες μεθόδους για τη δημιουργία τυχαίων δεδομένων. Μπορεί πλέον να παράγει ακολουθίες συγκεκριμένου μήκους, χρησιμοποιώντας αποκλειστικά χαρακτήρες από μια επιλεγμένη συμβολοσειρά. Ένα πρακτικό παράδειγμα είναι η δημιουργία τυχαίων σύντομων διευθύνσεων URL. Προστίθενται επίσης δυνατότητες παραγωγής τυχαίων αριθμών κινητής υποδιαστολής, είτε μέσα σε καθορισμένο διάστημα είτε μεταξύ μηδέν και ένα, με επιλογές για το αν συμπεριλαμβάνονται τα όρια.

Καλύτερη διαχείριση πολυ-byte κειμένου
Η mb_str_pad() συμπληρώνει μια συμβολοσειρά μέχρι να φτάσει στο επιθυμητό μήκος, υποστηρίζοντας κωδικοποιήσεις πολλών byte, όπως η UTF-8. Η παλαιότερη λειτουργία συμπλήρωσης περιοριζόταν σε κωδικοποιήσεις ενός byte. Η νέα συνάρτηση υποστηρίζει πολυ-byte χαρακτήρες τόσο στο αρχικό κείμενο όσο και στο κείμενο συμπλήρωσης, ενώ επιτρέπει τον καθορισμό της κωδικοποίησης. Πρόκειται για χρήσιμη βελτίωση όταν η εφαρμογή δεν χειρίζεται αποκλειστικά απλούς λατινικούς χαρακτήρες.

Λιγότερα λάθη στην κληρονομικότητα
Το χαρακτηριστικό #[Override] δηλώνει ότι μια μέθοδος προορίζεται να αντικαταστήσει μέθοδο γονικής κλάσης ή να υλοποιήσει μέθοδο διεπαφής. Αν δεν υπάρχει η αντίστοιχη μέθοδος, προκύπτει σφάλμα κατά τη μεταγλώττιση. Έτσι μπορούν να εντοπιστούν νωρίτερα τυπογραφικά λάθη ή αλλαγές ονομάτων που διαφορετικά θα περνούσαν απαρατήρητες. Είναι ιδιαίτερα χρήσιμο όταν αναβαθμίζονται εξαρτήσεις και μια μέθοδος δεν αντιστοιχεί πλέον σε εκείνη που περίμενε ο προγραμματιστής.

Πιο ευέλικτη αρχικοποίηση και αντιγραφή
Οι τοπικές στατικές μεταβλητές μπορούν πλέον να αρχικοποιούνται με οποιαδήποτε έκφραση, όχι μόνο με σταθερές εκφράσεις. Αυτό επιτρέπει, για παράδειγμα, τη χρήση αποτελέσματος μιας κλήσης συνάρτησης ως αρχικής τιμής. Παράλληλα, κατά την κλωνοποίηση αντικειμένων γίνεται δυνατή η επαναρχικοποίηση ιδιοτήτων readonly μέσα στη μέθοδο κλωνοποίησης. Η αλλαγή αντιμετωπίζει έναν περιορισμό που δυσκόλευε τη δημιουργία αντιγράφων όταν ορισμένες τιμές έπρεπε να διαφοροποιηθούν.

Μικρές διευκολύνσεις στα εργαλεία
Η εντολή php -l μπορεί να ελέγχει τη σύνταξη πολλών αρχείων μαζί, αντί να απαιτεί ξεχωριστή εκτέλεση για κάθε αρχείο. Στο php.ini, οι αναφορές σε μεταβλητές περιβάλλοντος υποστηρίζουν εφεδρικές τιμές μέσω της σύνταξης :-, διευκολύνοντας τις προεπιλεγμένες ρυθμίσεις διαφορετικών περιβαλλόντων. Επιπλέον, η class_alias() επιτρέπει ψευδώνυμα για ενσωματωμένες κλάσεις, ενώ τα στατιστικά συλλογής απορριμμάτων εμπλουτίζονται με στοιχεία χρήσιμα για εργαλεία παρακολούθησης και εντοπισμού προβλημάτων.

Προειδοποιήσεις που χρειάζονται προσοχή
Η unserialize() εκπέμπει πλέον E_WARNING αντί για E_NOTICE στις σχετικές περιπτώσεις μη έγκυρων δεδομένων, οπότε μπορεί να εμφανιστούν νέες καταγραφές σφαλμάτων. Οι array_sum() και array_product() προειδοποιούν για τιμές που δεν μπορούν να χρησιμοποιηθούν στους υπολογισμούς, ενώ αξιοποιούν αντικείμενα που υποστηρίζουν αριθμητική μετατροπή. Αλλάζει επίσης η συμπεριφορά της range() για ακατάλληλους συνδυασμούς ορισμάτων. Τέτοιες αλλαγές κάνουν προβληματικά δεδομένα πιο ορατά, αλλά απαιτούν έλεγχο του υπάρχοντος κώδικα.

Πιο συγκεκριμένες εξαιρέσεις
Η επέκταση ημερομηνίας και ώρας χρησιμοποιεί πιο συγκεκριμένους τύπους εξαιρέσεων και σφαλμάτων. Ορισμένες περιπτώσεις που παλαιότερα παρήγαγαν μόνο προειδοποίηση μπορούν πλέον να διακόψουν την εκτέλεση, αν δεν αντιμετωπιστούν κατάλληλα. Η SQLite3 αποκτά επίσης ειδική εξαίρεση, τη SQLite3Exception. Παράλληλα, καταργούνται σταδιακά παλιές ρυθμίσεις ελέγχων ισχυρισμών και αλλάζουν προβληματικές συμπεριφορές των τελεστών αύξησης και μείωσης για μη αριθμητικές τιμές.

Αναβάθμιση με έλεγχο συμβατότητας
Η μετάβαση στην PHP 8.3 χρειάζεται έλεγχο της εφαρμογής και μελέτη του οδηγού μετάβασης από την PHP 8.2. Οι νέες δυνατότητες βελτιώνουν την καθημερινή εργασία, αλλά οι αλλαγές στις προειδοποιήσεις και στις εξαιρέσεις μπορεί να απαιτήσουν προσαρμογές. Σύμφωνα με το χρονοδιάγραμμα που παρουσιάζεται, η υποστήριξη της έκδοσης ολοκληρώνεται στις 31 Δεκεμβρίου 2027, αποτελώντας σημαντικό παράγοντα για τον προγραμματισμό μιας αναβάθμισης.

Σου φάνηκαν χρήσιμες αυτές οι αλλαγές; Γνώριζες ήδη τις δυνατότητες της PHP 8.3; Αν βρήκες το κείμενο ενδιαφέρον, μπορείς να το μοιραστείς και να περιηγηθείς στον ιστότοπο για περισσότερα σχετικά άρθρα.

‹ ›