window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster υπάρχει ήδη') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Γιατί χρειαζόμαστε το Symfony Polyfill (... και γιατί δεν θα έπρεπε) - The Codest
The Codest
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Βιομηχανίες
    • Fintech & Τραπεζική
    • E-commerce
    • Adtech
    • Healthtech
    • Κατασκευή
    • Εφοδιαστική
    • Αυτοκίνητο
    • IOT
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
  • Σχετικά με εμάς
  • Υπηρεσίες
    • Ανάπτυξη λογισμικού
      • Ανάπτυξη Frontend
      • Backend Ανάπτυξη
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Μηχανικοί δεδομένων
      • Μηχανικοί cloud
      • Μηχανικοί QA
      • Άλλα
    • Συμβουλευτική
      • Έλεγχος & Συμβουλευτική
  • Αξία για
    • CEO
    • CTO
    • Διευθυντής παράδοσης
  • Η ομάδα μας
  • Case Studies
  • Μάθετε πώς
    • Blog
    • Συναντήσεις
    • Διαδικτυακά σεμινάρια
    • Πόροι
Καριέρα Ελάτε σε επαφή
Πίσω βέλος GO BACK
2022-05-19
Ανάπτυξη λογισμικού

Γιατί χρειαζόμαστε το Symfony Polyfill (... και γιατί δεν θα έπρεπε)

The Codest

Sebastian Luczak

PHP Αρχηγός μονάδας

Στο παρακάτω άρθρο, θα εξηγήσουμε πώς λειτουργεί το Symfony Polyfill και πώς σχετίζεται με τα έργα Symfony. Θα εμβαθύνουμε επίσης στην ιδέα που προσπαθεί να λύσει αυτή η βιβλιοθήκη.

Στις περισσότερες σύγχρονες PHP έργα, θα παρατηρήσετε μια μεγάλη εξάρτηση από το Symfony Polyfill βιβλιοθήκη. Σε αυτό το άρθρο, θα εξηγήσουμε όχι μόνο πώς λειτουργεί και πώς σχετίζεται με την Έργα Symfony, αλλά θα εμβαθύνουμε και στην ιδέα του προβλήματος που προσπαθεί να λύσει.

Λίγο ιστορία

PHP ήταν σε κακή κατάσταση για μεγάλο χρονικό διάστημα. Ήταν το 2005, όταν ο Andrei Zmievski ξεκίνησε ένα έργο για να φέρει εγγενή υποστήριξη Unicode για PHP λόγω μικτών κριτικών και πολλών ανησυχιών ότι PHP πηγαίνει προς τη λάθος κατεύθυνση. Ανάπτυξη της PHP 6.x ξεκίνησε. Αλλά δεν ολοκληρώθηκε ποτέ - και αυτή είναι μια ιστορία για μια άλλη μέρα. 10 χρόνια αργότερα, κάπου μεταξύ 2014 και 2015, οι Dmitry Stogov, Xinchen Hui και Nikita Popov ξεκίνησαν το phpng - έργο που βελτιστοποίησε και αναδιαμόρφωσε την εσωτερική μηχανή Zend Engine που χρησιμοποιείται από το PHP.

>_ Γεννήθηκε το PHP 7

Και για τα τελευταία χρόνια, PHP αναπτύσσεται ταχύτερα από ποτέ, και σήμερα βρίσκεται στη σταθερή έκδοση 8.1.

εικόνα

Λόγω της ταχείας ανάπτυξης νέων χαρακτηριστικών στη γλώσσα, όχι μόνο οι προγραμματιστές έπρεπε να προσαρμοστούν στις αλλαγές αυτές, αλλά και οι πάροχοι υπηρεσιών υποδομής και φιλοξενίας.

Για να διασφαλίσουμε ότι εμείς, οι προγραμματιστές, μπορούμε να χρησιμοποιούμε τα νεότερα και καλύτερα χαρακτηριστικά της αγαπημένης μας γλώσσας προγραμματισμού Symfony Polyfill project γεννήθηκε.

Symfony Polyfill και η λειτουργία του

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

Αυτή είναι μια καθαρή περιγραφή του Symfony Polyfill αλλά τι σημαίνει αυτό;

Λόγω της ταχείας εξέλιξης Γλώσσα PHP και την εκτός βημάτων προσαρμογή του λογισμικού των παρόχων υπηρεσιών διαδικτύου, οι περισσότεροι προγραμματιστές βρέθηκαν αντιμέτωποι με μια απλή επιλογή:

  • Ως προγραμματιστής, δημιουργώ εφαρμογές σε μια παλαιότερη έκδοση του PHP και δεν μπορούν να χρησιμοποιήσουν τα τελευταία χαρακτηριστικά της γλώσσας, ή
  • Ως προγραμματιστής, δημιουργώ μια σύγχρονη εφαρμογή χρησιμοποιώντας την τελευταία έκδοση του PHP.

Έπρεπε όμως να διατηρήσουν τη συμβατότητα με άλλα εργαλεία και υπηρεσίες που χρησιμοποιούνται ήδη τόσο στο κωδικός και την πλευρά της υποδομής - σχεδόν πάντα χρησιμοποιώντας παλαιότερες εκδόσεις της PHPΧρειάζεται να αναφέρω, αγαπητέ αναγνώστη, τον λεγόμενο "παράγοντα διασκέδασης" αυτών των δύο λύσεων;

Για να διευκολύνει τους προγραμματιστές, η κοινότητα του Ανοικτού Κώδικα το 2015 δημιούργησε η πρώτη σταθερή έκδοση του Polyfill με αριθμό 1.0. Η ζωή των προγραμματιστών έγινε ευκολότερη και θα μπορούσαμε να πούμε ότι το Symfony Polyfill έλυσε ένα πλήθος προβλημάτων, όπως η φορητότητα του κώδικα μεταξύ διαφορετικών πλατφορμών, Έκδοση PHP διαφορές, και κατέστησε πολύ πιο εύκολη την αναδιαμόρφωση των εφαρμογών και τη μείωση του τεχνολογικού χρέους.

Δυστυχώς, δεν μπορούν να λυθούν όλα τα προβλήματα με ένα εργαλείο.

Προβλήματα που σχετίζονται με τη διατήρηση πολλαπλών εκδόσεων του περιβάλλοντος

Για σύνθετα Έργα πληροφορικής, η διατήρηση διαφορετικών εκδόσεων περιβαλλόντων για διαφορετικούς πελάτες/ κλάδους/ τμήματα είναι μια κοινή διαδικασία. Αυτό έχει ως αποτέλεσμα την ανάγκη ανάπτυξης πολλών διαφορετικών κλάδων εφαρμογών ταυτόχρονα, συχνά με διαφορετικές λειτουργικές απαιτήσεις και με τη δική τους έλξη. Έχω αντιμετωπίσει πολλές φορές το πρόβλημα της διατήρησης της ίδιας εφαρμογής για διαφορετικούς πελάτες σε διαφορετικά περιβάλλοντα PHP5 / PHP7 και το πλήθος των προβλημάτων που σχετίζονται με την ασυμβατότητα των βιβλιοθηκών ή των εξαρτήσεών τους για διαφορετικές εκδόσεις είναι απλά άλυτο χρησιμοποιώντας μόνο Symfony Polyfill.

Το χάσμα δεξιοτήτων μεταξύ των μελών της ομάδας ανάπτυξης

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

Απροθυμία αλλαγής

εικόνα

Η υιοθέτηση των νέων γλωσσικών χαρακτηριστικών εξακολουθεί να είναι αρκετά χαμηλή και PHP 5 πάνω από το μερίδιο 24% δείχνει σαφώς ότι το ένα τέταρτο των έργων PHP εκτελούν εκδόσεις μικρότερες από την έκδοση 7.x, του οποίου η στήριξη ασφαλείας θα τερματιστεί στις 6 Δεκεμβρίου 2022. Αυτό σημαίνει ότι κατά τη στιγμή που γράφεται αυτή η δημοσίευση, πάνω από 25% των έργων Web που βασίζονται σε PHP θα είναι δυνητικά ευάλωτα σε όλες τις νέες ευπάθειες ασφαλείας μέχρι το τέλος του έτους. "Αν λειτουργεί, γιατί να ασχοληθούμε";

Συμπέρασμα

Θα πρέπει να προσαρμοζόμαστε στις γλωσσικές αλλαγές το συντομότερο δυνατό και να χρησιμοποιούμε τις πιο πρόσφατες λύσεις το συντομότερο δυνατό. Κατά τη διάρκεια μιας πιθανής μετάβασης ενός έργου Legacy, αξίζει να συμπεριλάβουμε Symfony Polyfill ως αρωγός και χρησιμοποιώντας τεχνικές όπως το Strangler Pattern και η μοντέρνα σήμερα μεθοδολογία BDD, η οποία είναι απίστευτα εύκολο να εφαρμοστεί στην Πλαίσιο Symfony. Έτσι είμαστε πραγματικά αναγκασμένοι να χρησιμοποιήσουμε Symfony Polyfill?

PHP ανάπτυξη δωρεάν διαβούλευση

Διαβάστε περισσότερα:

PHP Ανάπτυξη: 58T58P: 5 πράγματα που πρέπει να ξέρετε

7 Startups & Scaleups που θα ταρακουνήσουν τη σκηνή της αγοράς το 2022

PHP Ανάπτυξη. Symfony Console Component - Συμβουλές και κόλπα

Σχετικά άρθρα

Ανάπτυξη λογισμικού

PHP 8.2: Τι νέο υπάρχει;

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

The Codest
Sebastian Luczak PHP Αρχηγός μονάδας
Ανάπτυξη λογισμικού

PHP Ανάπτυξη. Symfony Console Component - Συμβουλές και κόλπα

Αυτό το άρθρο δημιουργήθηκε με σκοπό να σας δείξει τις πιο χρήσιμες και ανακτήσιμες συμβουλές και κόλπα σχετικά με την ανάπτυξη της κονσόλας Symfony.

The Codest
Sebastian Luczak PHP Αρχηγός μονάδας
Ανάπτυξη λογισμικού

Πρόσληψη εσωτερικών έναντι εξωτερικών προγραμματιστών

Πρόσληψη εσωτερικά ή εξωτερικά; Είναι ένα απόλυτο δίλημμα! Μάθετε τα πλεονεκτήματα της outsourcing ή της δημιουργίας μιας εσωτερικής ομάδας στο ακόλουθο άρθρο.

The Codest
Grzegorz Rozmus Επικεφαλής μονάδας Java

Εγγραφείτε στη βάση γνώσεών μας και μείνετε ενήμεροι για την τεχνογνωσία από τον τομέα της πληροφορικής.

    Σχετικά με εμάς

    The Codest - Διεθνής εταιρεία ανάπτυξης λογισμικού με κέντρα τεχνολογίας στην Πολωνία.

    Ηνωμένο Βασίλειο - Έδρα

    • Γραφείο 303B, 182-184 High Street North E6 2JA
      Λονδίνο, Αγγλία

    Πολωνία - Τοπικοί κόμβοι τεχνολογίας

    • Πάρκο γραφείων Fabryczna, Aleja
      Pokoju 18, 31-564 Κρακοβία
    • Πρεσβεία του εγκεφάλου, Konstruktorska
      11, 02-673 Βαρσοβία, Πολωνία

      The Codest

    • Αρχική σελίδα
    • Σχετικά με εμάς
    • Υπηρεσίες
    • Case Studies
    • Μάθετε πώς
    • Καριέρα
    • Λεξικό

      Υπηρεσίες

    • Συμβουλευτική
    • Ανάπτυξη λογισμικού
    • Backend Ανάπτυξη
    • Ανάπτυξη Frontend
    • Staff Augmentation
    • Backend Developers
    • Μηχανικοί cloud
    • Μηχανικοί δεδομένων
    • Άλλα
    • Μηχανικοί QA

      Πόροι

    • Γεγονότα και μύθοι σχετικά με τη συνεργασία με εξωτερικό συνεργάτη ανάπτυξης λογισμικού
    • Από τις ΗΠΑ στην Ευρώπη: Γιατί οι αμερικανικές νεοσύστατες επιχειρήσεις αποφασίζουν να μετεγκατασταθούν στην Ευρώπη
    • Σύγκριση υπεράκτιων κόμβων ανάπτυξης τεχνολογίας: Ευρώπη (Πολωνία), ASEAN (Φιλιππίνες), Ευρασία (Τουρκία)
    • Ποιες είναι οι κορυφαίες προκλήσεις των CTOs και των CIOs;
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Πνευματικά δικαιώματα © 2025 από The Codest. Όλα τα δικαιώματα διατηρούνται.

    elGreek
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek