Ένα από τα πιο συναρπαστικά γεγονότα το 2015 στον κόσμο της PHP ήταν η κυκλοφορία του PHP 7, 10 χρόνια μετά από την κυκλοφορία της τελευταίας μεγάλης έκδοσης, PHP 5. Με ένα σημαντικό βήμα προς τα εμπρός, το PHP 7 παρουσιάζει πολλές νέες δυνατότητες και αναβαθμίσεις απόδοσης .
Ωστόσο, αφαιρεί επίσης την παλιά, καταργημένη λειτουργικότητα, η οποία εισάγει ορισμένα διαλείμματα συμβατότητας, καθιστώντας πιο δύσκολη τη μετάβαση παλαιότερων εφαρμογών στη νέα έκδοση. Αυτός ο οδηγός θα πρέπει να χρησιμεύσει ως μια γρήγορη περιήγηση στο τι να περιμένετε αν σκοπεύετε να μετακινήσετε τις υπάρχουσες εφαρμογές σας ή να δημιουργήσετε νέες, πάνω από το PHP 7.
Αν δεν έχετε συνεργαστεί πρόσφατα με την PHP, ίσως αναρωτιέστε τι συνέβη με την PHP 6, γιατί η παράλειψη από την PHP 5 στην PHP 7; Λοιπόν, η μακρά ιστορία, η PHP 6 ήταν μια αποτυχία. Το κύριο χαρακτηριστικό της έκδοσης 6 ήταν η εγγενής υποστήριξη για χαρακτήρες Unicode, δεδομένου ότι η PHP χρησιμοποιείται κυρίως στην ανάπτυξη ιστού και ο ιστός χρειάζεται Unicode, οπότε η κίνηση να φέρει το Unicode στην PHP έχει νόημα.
Η ιδέα ήταν να φέρει πλήρη υποστήριξη για το Unicode στον ίδιο τον πυρήνα. Θα επέφερε εκτεταμένες δυνατότητες στη γλώσσα, από τη δυνατότητα χρήσης ανόητων emoji ως ονόματα μεταβλητών και λειτουργιών, έως ισχυρή διεθνή λειτουργικότητα συμβολοσειράς. Για παράδειγμα, όταν μια άλλη γλώσσα χρησιμοποιεί κεφαλαία και πεζά γράμματα διαφορετικά από τα Αγγλικά ή όταν ένα όνομα με Κινέζους χαρακτήρες πρέπει να μετατραπεί σε Αγγλικά.
Δυστυχώς, αυτό το φιλόδοξο σχέδιο αποδείχθηκε μεγαλύτερο πρόβλημα από το αναμενόμενο. Μεγάλο μέρος της βάσης κώδικα έπρεπε να μεταφερθεί για να υποστηρίξει το Unicode τόσο για πυρήνες όσο και για σημαντικές επεκτάσεις, οι οποίες αποδείχθηκαν κουραστικές και δύσκολες. Αυτό επιβράδυνε την ανάπτυξη άλλων χαρακτηριστικών στη γλώσσα, απογοητεύοντας πολλούς Προγραμματιστές PHP κατά τη διάρκεια. Εμφανίστηκαν πρόσθετα εμπόδια, τα οποία οδήγησαν σε μικρότερο ενδιαφέρον για την ανάπτυξη μιας εγγενούς υποστήριξης Unicode, με αποτέλεσμα τελικά το έργο να εγκαταλειφθεί.
Δεδομένου ότι πόροι, όπως βιβλία και άρθρα, είχαν γραφτεί για PHP 6 και την υποστήριξη Unicode, η νέα έκδοση θα μετονομάστηκε σε PHP 7 για να αποφευχθεί η σύγχυση.
Τέλος πάντων, αρκετή κατοικία στο θλιβερό παρελθόν, ας δούμε τι φέρνει το PHP 7 στο πάρτι.
Με σχεδόν όλες τις ενημερώσεις, αναμένονται μικρές αναβαθμίσεις απόδοσης. Ωστόσο, αυτή τη φορά η PHP επιφέρει σημαντική βελτίωση σε σχέση με προηγούμενες εκδόσεις, καθιστώντας την απόλυτη απόδοση ένα από τα πιο ελκυστικά χαρακτηριστικά της PHP 7. Αυτό έρχεται ως μέρος του έργου 'PHPNG', το οποίο αντιμετωπίζει τα εσωτερικά του ίδιου του Zend Engine.
Επαναπροσδιορίζοντας τις εσωτερικές δομές δεδομένων και προσθέτοντας ένα ενδιάμεσο βήμα στη σύνταξη κωδικών με τη μορφή Tree Syntax Abstract (AST), το αποτέλεσμα είναι ανώτερη απόδοση και πιο αποτελεσματική κατανομή μνήμης. Οι ίδιοι οι αριθμοί φαίνονται πολύ ελπιδοφόροι. σημεία αναφοράς που γίνονται σε πραγματικές εφαρμογές δείχνουν ότι το PHP 7 είναι διπλάσιο από το PHP 5,6 κατά μέσο όρο και έχει ως αποτέλεσμα 50% λιγότερη κατανάλωση μνήμης κατά τη διάρκεια αιτημάτων, καθιστώντας το PHP 7 ισχυρό αντίπαλο για τον μεταγλωττιστή HHVM JIT του Facebook. Ρίξτε μια ματιά σε αυτό το infographic από το Zend που απεικονίζει την απόδοση για κάποια κοινά CMS και πλαίσια .
Η μείωση της κατανάλωσης μνήμης επιτρέπει επίσης σε μικρότερα μηχανήματα να χειρίζονται καλύτερα τα αιτήματα μαζί με την ευκαιρία δημιουργίας μικροϋπηρεσιών γύρω από την PHP. Οι εσωτερικές αλλαγές, ιδίως η εφαρμογή AST, ανοίγουν επίσης δυνατότητες για μελλοντικές βελτιστοποιήσεις που θα μπορούσαν να ωθήσουν ακόμη περισσότερο την απόδοση. Μια νέα, εσωτερική εφαρμογή ενός μεταγλωττιστή JIT εξετάζεται για μελλοντικές εκδόσεις.
Το PHP 7 έρχεται με νέες δυνατότητες σύνταξης. Παρόλο που δεν επεκτείνει τις δυνατότητες της ίδιας της γλώσσας, παρέχουν έναν καλύτερο ή ευκολότερο τρόπο να κάνει τον κώδικά σας πιο ευχάριστο να γράφει και να ευχαριστεί το μάτι.
Αρχές της σχεδιαστικής τέχνης ορισμοί
Τώρα, μπορούμε να ομαδοποιήσουμε τις δηλώσεις εισαγωγής για τάξεις που προέρχονται από τον ίδιο χώρο ονομάτων σε ένα ενιαίο use
γραμμή. Αυτό θα βοηθήσει στην ευθυγράμμιση των δηλώσεων με ουσιαστικό τρόπο ή απλώς στην αποθήκευση ορισμένων byte στα αρχεία σας.
use FrameworkModuleFoo; use FrameworkModuleBar; use FrameworkModuleBaz;
Με το PHP 7 μπορούμε να χρησιμοποιήσουμε:
use FrameworkModule{Foo, Bar, Baz};
Ή, εάν προτιμάτε ένα στυλ πολλαπλών γραμμών:
use FrameworkModule{ Foo, Bar, Baz };
Αυτό επιλύει ένα κοινό πρόβλημα στον προγραμματισμό της PHP, όπου θέλουμε να αντιστοιχίσουμε μια τιμή σε μια μεταβλητή από άλλη μεταβλητή, εάν η τελευταία έχει οριστεί ή διαφορετικά παρέχει διαφορετική τιμή για αυτήν. Χρησιμοποιείται συνήθως όταν συνεργαζόμαστε με στοιχεία που παρέχονται από τον χρήστη.
Προ-PHP 7:
if (isset($foo)) { $bar = $foo; } else { $bar = 'default'; // we would give $bar the value 'default' if $foo is NULL }
Μετά την PHP 7:
$bar = $foo ?? 'default';
Αυτό μπορεί επίσης να συνδεθεί με μια σειρά μεταβλητών:
$bar = $foo ?? $baz ?? 'default';
Ο χειριστής διαστημοπλοίων επιτρέπει μια τρισδιάστατη σύγκριση μεταξύ δύο τιμών, όχι μόνο υποδεικνύοντας εάν είναι ίσες, αλλά και ποια είναι μεγαλύτερη, σχετικά με την ανισότητα επιστρέφοντας 1,0 ή -1.
Εδώ μπορούμε να κάνουμε διαφορετικές ενέργειες ανάλογα με το πώς διαφέρουν οι τιμές:
switch ($bar $foo) { case 0: echo '$bar and $foo are equal'; case -1: echo '$foo is bigger'; case 1: echo '$bar is bigger'; }
Οι τιμές που συγκρίνονται μπορούν να είναι ακέραιοι, πλωτήρες, χορδές ή ακόμα και πίνακες. Ελέγξτε την τεκμηρίωση για να πάρετε μια ιδέα για το πώς συγκρίνονται διαφορετικές τιμές μεταξύ τους. [https://wiki.php.net/rfc/combined-comparison-operator]
Αλλά φυσικά η PHP 7 φέρνει επίσης νέα και συναρπαστική λειτουργικότητα.
Η PHP 7 επεκτείνει τις προηγούμενες δηλώσεις τύπων παραμέτρων σε μεθόδους (τάξεις, διασυνδέσεις και συστοιχίες) προσθέτοντας τους τέσσερις κλιματικούς τύπους. Ακέραιοι (int
), floats (float
), booleans (bool
) και string (string
) ως πιθανοί τύποι παραμέτρων.
Επιπλέον, μπορούμε προαιρετικά να καθορίσουμε τι είδους μεθόδους και συναρτήσεις επιστρέφουν. Οι υποστηριζόμενοι τύποι είναι bool , int , φλοτέρ , σειρά , πίνακας , καλεί , όνομα του Τάξη ή Διεπαφή , εαυτός και μητρική εταιρεία (για μεθόδους τάξης)
class Calculator { // We declare that the parameters provided are of type integer public function addTwoInts(int $x, int $y): int { return $x + $y; // We also explicitly say that this method will return an integer } }
Οι δηλώσεις τύπου επιτρέπουν τη δημιουργία πιο ισχυρών εφαρμογών και αποφεύγουν τη μετάβαση και την επιστροφή λανθασμένων τιμών από συναρτήσεις. Άλλα οφέλη περιλαμβάνουν στατικούς αναλυτές κώδικα και IDE, τα οποία παρέχουν καλύτερη εικόνα σχετικά με τη βάση κώδικα, εάν δεν υπάρχουν DocBlocks.
Δεδομένου ότι η PHP είναι μια γλώσσα με αδύναμο τύπο, ορισμένες τιμές για τους τύπους παραμέτρων και επιστροφής θα μεταδίδονται βάσει του περιβάλλοντος. Εάν περάσουμε την τιμή '3' σε μια συνάρτηση που έχει δηλωμένη παράμετρο τύπου int
, ο διερμηνέας θα την αποδεχτεί ως ακέραιο και δεν θα ρίξει λάθη. Εάν δεν το θέλετε, μπορείτε να ενεργοποιήσετε το strict mode
προσθέτοντας ένα declare
διευθυντικός.
declare(strict_types=1);
Αυτό ορίζεται σε βάση ανά αρχείο, καθώς μια καθολική επιλογή θα διαιρούσε τα αποθετήρια κώδικα σε αυτά που έχουν δημιουργηθεί με παγκόσμια αυστηρότητα επί και αυτά που δεν είναι, με αποτέλεσμα απροσδόκητη συμπεριφορά όταν συνδυάζουμε κώδικα και από τα δύο.
Με την προσθήκη εξαιρέσεων κινητήρα, θανατηφόρα σφάλματα που θα είχαν ως αποτέλεσμα τον τερματισμό του σεναρίου μπορούν να εντοπιστούν και να αντιμετωπιστούν εύκολα.
Σφάλματα όπως η κλήση ανύπαρκτης μεθόδου δεν θα τερματίσει το σενάριο, αλλά δημιουργούν μια εξαίρεση που μπορεί να αντιμετωπιστεί από ένα μπλοκ δοκιμής, το οποίο βελτιώνει το χειρισμό σφαλμάτων για τις εφαρμογές σας. Αυτό είναι σημαντικό για ορισμένους τύπους εφαρμογών, διακομιστών και δαιμόνων, διότι διαφορετικά θανατηφόρα σφάλματα θα απαιτούσαν την επανεκκίνηση τους. Οι δοκιμές στο PHPUnit θα πρέπει επίσης να γίνουν πιο εύχρηστες καθώς τα θανατηφόρα σφάλματα πέφτουν ολόκληρη η δοκιμαστική σουίτα. Οι εξαιρέσεις, και όχι τα λάθη, θα αντιμετωπίζονται σε κάθε δοκιμαστική βάση.
Η PHP 7 προσθέτει έναν αριθμό νέων κατηγοριών εξαιρέσεων με βάση τον τύπο σφαλμάτων που ενδέχεται να αντιμετωπιστούν. Προκειμένου να διατηρηθεί η συμβατότητα μεταξύ των εκδόσεων, ένα νέο Throwable
έχει προστεθεί διεπαφή που μπορεί να εφαρμοστεί τόσο από εξαιρέσεις κινητήρα όσο και από εξαιρέσεις χρήστη. Αυτό ήταν απαραίτητο για να αποφευχθούν εξαιρέσεις κινητήρα για την επέκταση της κατηγορίας εξαίρεσης βάσης, με αποτέλεσμα παλαιότερες εξαιρέσεις αλίευσης κώδικα που δεν υπήρχαν πριν.
Πριν από την PHP 7, αυτό θα είχε τερματίσει το σενάριο με μοιραίο σφάλμα:
try { thisFunctionDoesNotEvenExist(); } catch (EngineException $e) { // Clean things up and log error echo $e->getMessage(); }
Τα ανώνυμα μαθήματα είναι ξάδελφοι ανώνυμων λειτουργιών που μπορεί να χρησιμοποιήσετε σε μια απλή βραχυπρόθεσμη παρουσία. Οι ανώνυμες τάξεις δημιουργούνται εύκολα και χρησιμοποιούνται όπως ένα κανονικό αντικείμενο. Εδώ είναι ένα παράδειγμα από τα έγγραφα.
Προ-PHP 7
class MyLogger { public function log($msg) { print_r($msg . '
'); } } $pusher->setLogger( new MyLogger() );
Με ανώνυμη τάξη:
$pusher->setLogger(new class { public function log($msg) { print_r($msg . '
'); } });
Οι ανώνυμες τάξεις είναι χρήσιμες στη δοκιμή μονάδων, ιδιαίτερα σε πλαστή αντικείμενα δοκιμών και υπηρεσίες. Αυτό μας βοηθά να αποφύγουμε βαριές βιβλιοθήκες και πλαίσια κοροϊδίας δημιουργώντας ένα απλό αντικείμενο που παρέχει τη διεπαφή που θέλουμε να κοροϊδέψουμε.
Προστέθηκαν δύο νέες λειτουργίες για τη δημιουργία κρυπτογραφικά ασφαλούς συμβολοσειράς και ακέραιων αριθμών.
random_bytes(int $len);
Επιστρέφει μια τυχαία συμβολοσειρά με μήκος $len
.
random_int(int $min, int $max);
Επιστρέφει έναν αριθμό μεταξύ $min
και $max
.
Σε αντίθεση με πολλές άλλες γλώσσες, πριν από την PHP 7, η PHP δεν είχε τρόπο να ξεφύγει από ένα σημείο κωδικού Unicode σε γραμματοσειρές συμβολοσειράς,. Αυτή η λειτουργικότητα προσθέτει τη διαφυγή u
ακολουθία για την παραγωγή τέτοιων χαρακτήρων χρησιμοποιώντας το σημείο αναφοράς UTF-8. Αυτό είναι καλύτερο από το να εισαγάγετε τους χαρακτήρες απευθείας, επιτρέποντας καλύτερο χειρισμό αόρατων χαρακτήρων καθώς και χαρακτήρων που έχουν την ίδια γραφική αναπαράσταση αλλά έχουν διαφορετική σημασία.
echo 'u{1F602}'; // outputs ‚
Λάβετε υπόψη ότι αυτό σπάει τον υπάρχοντα κώδικα με το u
ακολουθία επειδή αλλάζει τη συμπεριφορά.
ο ρόλος του CFO σε μια εταιρεία
Οι γεννήτριες στο PHP λαμβάνουν επίσης μερικές ωραίες πρόσθετες δυνατότητες. Τώρα, οι γεννήτριες έχουν μια δήλωση επιστροφής που μπορεί να χρησιμοποιηθεί για να της επιτρέψει να παράγει μια τελική τιμή μετά την επανάληψη. Αυτό μπορεί να χρησιμοποιηθεί για να ελέγξει ότι η γεννήτρια έχει εκτελεστεί χωρίς σφάλματα και επιτρέπει στον κώδικα που κάλεσε τη γεννήτρια να χειριστεί κατάλληλα διάφορα σενάρια.
Επιπλέον, οι γεννήτριες μπορούν να επιστρέψουν και να παράγουν εκφράσεις από άλλες γεννήτριες. Αυτό τους επιτρέπει να διαιρούν πολύπλοκες λειτουργίες σε απλούστερες και αρθρωτές μονάδες.
function genA() { yield 2; yield 3; yield 4; } function genB() { yield 1; yield from genA(); // 'genA' gets called here and iterated over yield 5; return 'success'; // This is a final result we can check later } foreach (genB() as $val) { echo '
$val'; // This will output values 1 to 5 in order } $genB()->getReturn(); // This should return 'success' when there are no errors.
Οι προσδοκίες είναι μια βελτίωση στο assert()
λειτουργία διατηρώντας ταυτόχρονα την συμβατότητα προς τα πίσω Επιτρέπουν ισχυρισμούς μηδενικού κόστους στον κώδικα παραγωγής και παρέχουν τη δυνατότητα να ρίξουν προσαρμοσμένες εξαιρέσεις όταν ο ισχυρισμός αποτύχει, κάτι που μπορεί να είναι χρήσιμο κατά την ανάπτυξη.
assert()
γίνεται γλωσσική κατασκευή στο PHP 7. Οι ισχυρισμοί πρέπει να χρησιμοποιούνται για σκοπούς εντοπισμού σφαλμάτων μόνο σε περιβάλλοντα ανάπτυξης και δοκιμής. Για να διαμορφώσουμε τη συμπεριφορά του, μας παρέχονται δύο νέες οδηγίες.
zend.assertions
1
: δημιουργία και εκτέλεση κώδικα (κατάσταση ανάπτυξης) (προεπιλεγμένη τιμή)0
: δημιουργεί τον κώδικα, αλλά πηδά γύρω του κατά το χρόνο εκτέλεσης-1
: δεν δημιουργεί κώδικα καθιστώντας μηδενικό κόστος (τρόπος παραγωγής)assert.exception
1
: ρίξτε όταν ο ισχυρισμός αποτύχει, είτε ρίχνοντας το αντικείμενο που παρέχεται ως εξαίρεση είτε ρίχνοντας ένα νέο AssertionError Αν δεν παρέχεται εξαίρεση0
: χρησιμοποιήστε ή δημιουργήστε ένα Ρίξιμο όπως περιγράφεται παραπάνω, αλλά δημιουργείτε μόνο μια προειδοποίηση που βασίζεται σε αυτό το αντικείμενο αντί να την ρίχνετε (συμβατή με συμπεριφορά PHP 5)Η εισαγωγή μιας μεγάλης έκδοσης φέρνει την ευκαιρία να αλλάξετε / ενημερώσετε παλαιότερες λειτουργίες ή ακόμα και να τις αφαιρέσετε εάν θεωρηθούν πολύ παλιά ή έχουν καταργηθεί για κάποιο χρονικό διάστημα. Αυτές οι αλλαγές μπορούν να προκαλέσουν διακοπές στη συμβατότητα σε παλαιότερες εφαρμογές.
Ένα άλλο ζήτημα που προκύπτει από τέτοια άλματα έκδοσης είναι ότι σημαντικές βιβλιοθήκες και πλαίσια στα οποία βασίζεστε ενδέχεται να μην έχουν ενημερωθεί ακόμη για να υποστηρίξουν την τελευταία έκδοση. Η ομάδα της PHP προσπάθησε να κάνει τις νέες αλλαγές όσο το δυνατόν πιο συμβατές προς τα πίσω και να επιτρέψει τη μετανάστευση στη νέα έκδοση να είναι όσο το δυνατόν ανώδυνη. Οι νεότερες και πιο ενημερωμένες εφαρμογές πρέπει να διευκολύνουν τη μετάβαση στη νέα έκδοση, ενώ οι παλαιότερες εφαρμογές ενδέχεται να πρέπει να αποφασίσουν εάν τα οφέλη υπερτερούν του κόστους, πιθανώς επιλέγοντας να μην ενημερωθούν.
Τα περισσότερα διαλείμματα είναι μικρά και μπορούν να μετριαστούν εύκολα, ενώ άλλα μπορεί να απαιτούν περισσότερη προσπάθεια και χρόνο. Βασικά, εάν είχατε προειδοποιήσεις κατάργησης στην εφαρμογή σας πριν εγκαταστήσετε το PHP 7, πιθανότατα θα λάβετε σφάλματα που θα διακόψουν την εφαρμογή έως ότου επιδιορθωθεί. Σας προειδοποιήθηκαν, έτσι;
Το πιο σημαντικό, τα παλιά και τα καταργημένα SAPI καταργήθηκαν όπως το mysql
επέκταση (αλλά δεν πρέπει να το χρησιμοποιείτε πρώτα, σωστά;). Για μια πλήρη λίστα επεκτάσεων και καταργημένων χαρακτηριστικών, μπορείτε να ελέγξετε αυτά τα RFC εδώ και εδώ .
Επιπλέον, άλλα SAPI μεταφέρονται στο PHP 7.
Αυτή η ενημέρωση έκανε κάποιες αλλαγές υπέρ της συνέπειας για κατασκευές μεταβλητής-μεταβλητής. Αυτό επιτρέπει πιο σύνθετες εκφράσεις με μεταβλητές αλλά εισάγει αλλαγές στη συμπεριφορά σε ορισμένες άλλες περιπτώσεις, όπως φαίνεται παρακάτω.
// old meaning // new meaning $$foo['bar']['baz'] ${$foo['bar']['baz']} ($$foo)['bar']['baz'] $foo->$bar['baz'] $foo->{$bar['baz']} ($foo->$bar)['baz'] $foo->$bar['baz']() $foo->{$bar['baz']}() ($foo->$bar)['baz']() Foo::$bar['baz']() Foo::{$bar['baz']}() (Foo::$bar)['baz']()
Αυτό θα σπάσει τη συμπεριφορά των εφαρμογών που έχουν πρόσβαση σε τιμές όπως αυτή. Από την άλλη πλευρά, μπορείτε να κάνετε μερικά τακτοποιημένα πράγματα όπως αυτό :.
// Nested () foo()(); // Calls the return of foo() $foo->bar()(); // IIFE syntax like JavaScript (function() { // Function body })(); // Nested :: $foo::$bar::$baz
Οι ετικέτες ανοίγματος / κλεισίματος ,, ...
καταργούνται και δεν ισχύουν πλέον. Η αντικατάστασή τους με τα έγκυρα πρέπει να είναι εύκολη, αλλά τι κάνετε να τα χρησιμοποιήσετε ούτως ή άλλως, Weirdo;
Αποτέλεσμα από προσθήκες όπως παραμέτρους και κλάσεις τύπων επιστροφής, διεπαφές και χαρακτηριστικά δεν επιτρέπεται πλέον να έχουν τα ακόλουθα ονόματα:
Αυτά προκαλούν διακοπές σε υπάρχουσες εφαρμογές και βιβλιοθήκες που τις χρησιμοποιούν, αλλά θα πρέπει να είναι εύκολο να επιδιορθωθούν. Επίσης, παρόλο που δεν προκαλούν σφάλμα και είναι έγκυρα, τα ακόλουθα δεν πρέπει να χρησιμοποιούνται καθώς προορίζονται για μελλοντική χρήση:
Η αποφυγή χρήσης τους θα πρέπει να σας απαλλάξει από το έργο της αλλαγής τους στο μέλλον.
Για μια πλήρη λίστα αλλαγών που θα διακόψουν τη συμβατότητα, ελέγξτε αυτό έγγραφο .
Μπορείτε επίσης να χρησιμοποιήσετε php7cc , ο οποίος ελέγχει τον κωδικό σας και μπορεί να εντοπίσει τυχόν πιθανά ζητήματα που ενδέχεται να προκύψουν εάν μετακινηθείτε στο PHP 7. Αλλά φυσικά, δεν υπάρχει καλύτερος τρόπος από το να εγκαταστήσετε το PHP 7 και να δείτε μόνοι σας.
Πολλές υπηρεσίες φιλοξενίας έχουν αρχίσει να προσθέτουν υποστήριξη για PHP 7. Αυτό είναι καλό νέο για κοινόχρηστους παρόχους φιλοξενίας, καθώς τα κέρδη απόδοσης θα τους επιτρέψουν να αυξήσουν τον αριθμό των ιστότοπων πελατών στο υλικό τους, μειώνοντας τα λειτουργικά τους έξοδα και αυξάνοντας τα περιθώριά τους. Όσο για τους ίδιους τους πελάτες, δεν πρέπει να περιμένουν υπερβολική ώθηση υπό αυτές τις συνθήκες, αλλά για να είμαστε δίκαιοι, η κοινόχρηστη φιλοξενία δεν είναι ούτως ή άλλως μια επιλογή προσανατολισμένη στην απόδοση.
απόδοση κόμβου js έναντι java
Από την άλλη πλευρά, οι υπηρεσίες που προσφέρουν εικονικούς ιδιωτικούς διακομιστές ή αποκλειστικούς διακομιστές θα αποκομίσουν πλήρως τα οφέλη αυτής της απόδοσης. Ορισμένες υπηρεσίες PaaS όπως η Heroku υποστήριξαν το PHP 7 νωρίς, αλλά άλλες υπηρεσίες, όπως το AWS Beanstalk και το OpenShift της Oracle, υστερούν. Ελέγξτε τον ιστότοπο του παροχέα PaaS για να δείτε εάν η PHP 7 υποστηρίζεται ήδη ή εάν η υποστήριξη θα έρθει στο εγγύς μέλλον.
Φυσικά, οι πάροχοι IaaS σας επιτρέπουν να αναλάβετε τον έλεγχο του υλικού και να εγκαταστήσετε το PHP 7 (ή να μεταγλωττίσετε αν αυτό είναι περισσότερο που σας αρέσει). Τα πακέτα PHP 7 είναι ήδη διαθέσιμα για μεγάλα περιβάλλοντα IaaS.
Εκτός από τη συμβατότητα υποδομής, πρέπει επίσης να λάβετε υπόψη σας πιθανά ζητήματα συμβατότητας λογισμικού. Δημοφιλή συστήματα διαχείρισης περιεχομένου όπως το WordPress, το Joomla και το Drupal έχουν προσθέσει υποστήριξη για το PHP 7 με τις τελευταίες κυκλοφορίες τους. Τα μεγάλα πλαίσια όπως το Symfony και το Laravel απολαμβάνουν επίσης πλήρη υποστήριξη.
Ωστόσο, είναι καιρός για μια λέξη προειδοποίησης. Αυτή η υποστήριξη δεν επεκτείνεται σε κώδικα τρίτων με τη μορφή πρόσθετων, προσθηκών, πακέτων ή οτιδήποτε το καλεί το CMS ή το πλαίσιο. Ενδέχεται να υποφέρουν από προβλήματα συμβατότητας και είναι δική σας ευθύνη να βεβαιωθείτε ότι όλα είναι έτοιμα για PHP 7.
Για ενεργά, διατηρημένα αποθετήρια, αυτό δεν πρέπει να αποτελεί πρόβλημα. Ωστόσο, παλαιότερα και μη διατηρημένα αποθετήρια που δεν διαθέτουν υποστήριξη PHP 7 θα μπορούσαν να κάνουν ολόκληρη την εφαρμογή σας άχρηστη.
Η κυκλοφορία του PHP 7 αφαίρεσε τον παλιό και παρωχημένο κώδικα και άνοιξε το δρόμο για νέες δυνατότητες και αναβαθμίσεις απόδοσης στο μέλλον. Επιπλέον, η PHP αναμένεται να κερδίσει επιπλέον βελτιστοποιήσεις απόδοσης σύντομα. Παρά τα διαλείμματα συμβατότητας με προηγούμενες κυκλοφορίες, τα περισσότερα ζητήματα είναι εύκολο να επιλυθούν.
Οι βιβλιοθήκες και τα πλαίσια μετεγκαθιστούν τώρα τον κώδικά τους στο PHP 7 καθιστώντας έτσι διαθέσιμες τις πιο πρόσφατες εκδόσεις. Σας ενθαρρύνω να το δοκιμάσετε και να δείτε τα αποτελέσματα για τον εαυτό σας. Ίσως η εφαρμογή σας είναι ήδη συμβατή και περιμένει να τη χρησιμοποιήσετε και επωφεληθείτε από το PHP 7.
Σχετίζεται με: Η λίστα με τα 10 πιο συνηθισμένα λάθη που κάνουν οι προγραμματιστές της PHP