PHP 8.2: Τι νέο υπάρχει;
Η νέα έκδοση του PHP είναι προ των πυλών. Ποιες είναι οι νέες υλοποιήσεις που πρέπει να γνωρίζετε; Διαβάστε αυτό το άρθρο για να μάθετε!

Ως προγραμματιστής του PHP θυμάμαι ακόμα τις μέρες του PHP4, την πρώτη (προαιρετική!) υλοποίηση GC στο PHP5, και έζησα την _υπερβολή_ της έλευσης του PHP7 και τις προεκτάσεις της.
Όλα αυτά τα χρόνια πολλοί άνθρωποι με έχουν ρωτήσει γιατί ασχολούμαι προγραμματισμός σε PHP, και εδώ και πολλά χρόνια ακούω σαν μάντρα δύο επαναλαμβανόμενα επιχειρήματα γιατί πρέπει να σταματήσω και να αρχίσω να γράφω εμπορικό λογισμικό σε γλώσσες όπως Java ή C#.
Σήμερα θα παραθέσω αυτά τα επιχειρήματα και θα προσπαθήσω να αλλάξω τη στάση σας απέναντι στην PHP τουλάχιστον λίγο. Ναι, ο τίτλος αυτού του άρθρου είναι ένα παράλογο clickbait.
PHP πεθαίνει χρόνο με το χρόνο. Η κάποτε πιο δημοφιλής γλώσσα του διαδικτύου χάνει τώρα τη δημοτικότητά της μήνα με το μήνα, κυρίως λόγω JavaScript.
Όταν εξετάζετε τους αριθμούς, η αλήθεια είναι απογοητευτική! Κατά τη διάρκεια του περασμένου έτους, PHP έχασε το 1,6% του μεριδίου της ως η backend γλώσσα του Web.
Εάν PHP συνεχίζει αυτή την πτωτική τάση, σε 18 χρόνια PHP θα πέσει κάτω από το 50% της backend Web τεχνολογίας!
Αλλά εντάξει, πέρα από τα αστεία - αν και οι αριθμοί είναι πραγματικοί όπως αναφέρεται από το W3CTechs.
Η πρώτη αναφορά που PHP πεθαίνει μπορεί να βρεθεί στο διαδίκτυο από το 2013. Τότε το λογισμικό Gunslinger δημοσίευσε ένα άρθρο (το οποίο παρεμπιπτόντως συνιστώ ανεπιφύλακτα!) λέγοντας ότι το PHP θα πεθάνει επειδή δεν υποστηρίζει μακροχρόνιες διεργασίες και επειδή του λείπει η ασύγχρονη λειτουργία.
Και αυτό είναι γεγονός, PHP δεν ήταν φτιαγμένη γι' αυτό!
αν το μόνο που έχεις είναι ένα σφυρί, όλα μοιάζουν με καρφί
Αλλά πίσω στους αριθμούς - ας ρίξουμε μια ματιά στα περσινά στοιχεία για PHP εκδόσεις που χρησιμοποιούνται στα πακέτα Packagist. Τα πιο πρόσφατα δεδομένα είναι διαθέσιμα στον ιστότοπο της πηγής packagist.org
Αυτή είναι η καμπύλη υιοθέτησης νέων εκδόσεων μιας γλώσσας προγραμματισμού που πεθαίνει;
Αν αυτό δεν είναι αρκετό, ας ελέγξουμε το "ποσοστό θανάτου PHP" σε σύγκριση με άλλες γλώσσες.
Τα δεδομένα για την ανάλυση προέρχονται απόGitHut 2.0, το οποίο δημιουργεί ένα διάγραμμα του αριθμού των git push
ανά γλώσσα στο Github από το 2012, σύμφωνα με το σύστημα - "Η ποσοστιαία κατανομή των γλωσσών στο γραμμικό διάγραμμα δείχνει τις 10 κορυφαίες (ή χειροκίνητα επιλεγμένες) γλώσσες από το 2012/Q2".
Όπως μπορείτε να δείτε PHP καθώς και άλλες δημοφιλείς γλώσσες όπως Ruby, C/C++, Python έχουν σημειώσει σημαντική πτώση της δημοτικότητάς τους στο Github τα τελευταία χρόνια, ωστόσο υπάρχει μια ανοδική τάση και αναμένουμε να επιστρέψουν σε υψηλές θέσεις μετά από μια μεγαλύτερη περίοδο πλαγιοκαθοδικής κίνησης. (αυτό δεν αποτελεί επενδυτική συμβουλή)
Η αρχική hype
για τη γλώσσα Javascript φαίνεται στο ίδιο διάγραμμα. Θα αφήσω ήδη τα συμπεράσματα και την ανάλυσή τους σε εσάς, αγαπητέ αναγνώστη.
Αλλά και πάλι - μια γλώσσα που πεθαίνει δεν θα έπρεπε να τείνει να αυξάνει τον αριθμό των προσφορών εργασίας για προγραμματιστές, σωστά;
Τη στιγμή που γράφω αυτό το άρθρο, μπορώ να επιλέξω ανάμεσα σε 171 προσφορές εργασίας σε μία από τις κορυφαίες πύλες εργασίας στην Πολωνία, εκ των οποίων οι 50 είναι για νέους. PHP πεθαίνει, σωστά;
Και μιλώντας για χρήματα... γνωρίζατε ότι PHP και την πηγή του κωδικός διατηρείται από τον Νοέμβριο του 2021 από το ανεξάρτητος Ανοικτός Κώδικας κοινότηταΤο Ίδρυμα PHP το οποίο πληρώνει σημαντικά χρήματα σε προγραμματιστές ανοικτού κώδικα για συνεισφορές στο php-src
?
Σε αντίθεση με άλλες γλώσσες και πλαίσια, τα οποία συχνά ανήκουν σε μεγάλες εταιρείες, ο πυρήνας ανάπτυξης ομάδα καταβάλλεται απευθείας από το λογαριασμό του ιδρύματος, ο οποίος λειτουργεί με συνεισφορές ιδιωτικών εταιρειών όπως η JetBrains και η Symfony Corp, αλλά και απόμικρές συνεισφορές από μεμονωμένους προγραμματιστές.
Ο Ανοιχτός Κώδικας σε όλο του το μεγαλείο!
Ναι, αυτό το επιχείρημα προέρχεται πάντα από το στόμα προγραμματιστών που έχουν εξοικειωθεί με ισχυρά τυποποιημένες, συγκρίσιμες γλώσσες.
Κοιτάζοντας το γράφημα των δεδομένων που συλλέχθηκαν κατά τη διάρκεια τηςΈρευνα StackOverflow του 2021, μπορείτε να δείτε ότι 10.834 ερωτηθέντες που αντιπροσωπεύουν σχεδόν 60% του συνόλου βρήκαν το PHP "φοβερό".
Ως παλαιάς σχολής Προγραμματιστής PHP, καταλαβαίνω γιατί συμβαίνει αυτό. Μου έρχεται αμέσως στο μυαλό ένα κλασικό παράδειγμα προβλημάτων μνήμης σε PHP:
<?php
class FOO {
public $f,
}
class BAR {
public $f,
}
while(1) {
$a = new FOO(),
$b = new BAR(),
$a->f = $b,
$b->f = $a,
print "Memory usage: " . number_format(memory_get_usage(true)) . " bytesn",
unset($a),
unset($b),
}
Για τους μη μυημένους - ναι, ο παραπάνω κώδικας προκαλεί σφάλμα μνήμης. Και υπάρχει και κάτι άλλο. Από την ηλίθια ονομασία των μεθόδων και την πλήρη έλλειψη λογικής στη σειρά των παραμέτρων τους (ναι, όλοι αγαπάμε str_
και array_
) στο πιο διάσημο σφάλμα του PHP T_PAAMAYIM_NEKUDOTAYIM
- Το PHP είναι γεμάτο από ιδιοτροπίες και ελαττώματα των παλαιών εκδόσεων. Αυτό δεν σημαίνει ότι αυτά που ακούσαμε για PHP πριν από μερικά χρόνια εξακολουθεί να ισχύει. Η γλώσσα έχει υποστεί μια τεράστια μεταμόρφωση και σήμερα χαίρομαι που μπορώ να κοιτάξω τους ορισμούς των αντικειμένων μου:
readonly class NotificationEvent
{
public function __construct(
public string $context,
public User $user,
public string $body,
public DateTime $issuedAt,
) {}
}
Επιπλέον, η Οικοσύστημα PHP έχει αναπτυχθεί τρομερά, και τώρα έχουμε απίστευτες ευκαιρίες να δημιουργήσουμε καλό, υψηλά τυποποιημένο και καλά δοκιμασμένο κώδικα. Μπορούμε να χρησιμοποιήσουμε Symfony για την ανάπτυξη εφαρμογών DDD χωρίς σημαντικά προβλήματα, και μπορούμε να παρακάμψουμε το πρόβλημα του συγχρονισμού του PHP χρησιμοποιώντας το Message Bus.
Και ενώ εγώ ο ίδιος δεν πιστεύω PHP είναι κατάλληλο για τη δημιουργία μακροχρόνιων backend διεργασιών και έχει τεράστια προβλήματα απόδοσης όταν πρόκειται για συγχρονισμό καταστάσεων, έχω επίσηςδημιούργησε ένα παιχνίδι κονσόλας PHP χρησιμοποιώντας το Symfony + Docker με τα χέρια μου ως παράδειγμα ότι το PHP μπορεί ακόμα να έχει αντισυμβατικές χρήσεις.
Ένα άλλο πλεονέκτημα του PHP είναι το χαμηλό εμπόδιο εισόδου για τους νέους προγραμματιστές. Τεκμηρίωση δύο δημοφιλών πλαισίων Symfony καιLaravel και PHP τεκμηρίωση είναι αρκετά για να εισέλθετε στον κόσμο του backend με τη βοήθειά τους. Ένας κόσμος που δεν είναι τέλειος στο PHP αλλά επιτρέπει πολλά. Χρησιμοποιώντας πρόσθετες βιβλιοθήκες όπως η Laravel Nova είμαστε σε θέση να δημιουργήσουμε σχεδόν οποιοδήποτε στοιχείο του συστήματός μας με δύο μόνο εντολές.
Είναι PHP πεθαίνεις;
Όχι, αλλά έχει πρόβλημα εικόνας και χρειάζεται πολλή δουλειά για να βελτιωθεί. Εμείς, οι προγραμματιστές, πρέπει να κάνουμε αυτή τη δουλειά διδάσκοντας τη νέα γενιά και μεταδίδοντας τις βέλτιστες πρακτικές με τη μορφή άρθρων, βιβλιοθηκών και συμβουλών.
Ως μια γλώσσα που έχει βρεθεί στο αγορά εδώ και είκοσι χρόνια, η οποία έχει ήδη επιβιώσει από περισσότερες από μία hype
(θυμάστε το Objective-C;) Νομίζω ότι θα τα καταφέρει και θα βρει τη θέση του.
Και ποιος ξέρει, ίσως οι προβλέψεις μου να αποδειχθούν σωστές και το PHP 10.x να γνωρίσει νέα άνθηση σε δύο χρόνια;