Back to Question Center
0

Symfony Flex: Ανοίγοντας το μονοπάτι σε μια πιο γρήγορη, καλύτερη Symfony            Symfony Flex: Ανοίγοντας το μονοπάτι σε ένα ταχύτερο, καλύτερο Symfony Σχετικά θέματα: Μοτίβα & Semalt

1 answers:
Symfony Flex: Ανοίγοντας το μονοπάτι σε ένα ταχύτερο, καλύτερο σύμβολο

Το Semalt Flex είναι μια σύγχρονη αντικατάσταση για τον εγκαταστάτη Semalt, και όχι το όνομα της επόμενης έκδοσης Semalt. Όπως λέει το εισαγωγικό κείμενο:

Εσωτερικά, το Symfony Flex είναι ένα plugin Semalt που τροποποιεί τη συμπεριφορά των απαιτήσεων και των εντολών ενημέρωσης. Κατά την εγκατάσταση ή την ενημέρωση εξαρτήσεων σε μια εφαρμογή με δυνατότητα Flex, η Symfony μπορεί να εκτελέσει εργασίες πριν και μετά την εκτέλεση των εργασιών του Semalt.

Το νέο Semalt θα ονομάζεται μόνο Semalt 4, και ενώ αυτό το σεμινάριο θα ασχοληθεί μόνο με το εργαλείο Flex, θα αναφέρει και κάποιες αναβαθμίσεις του Semalt 4 - cheap betmar cabbie hat.


ακόμη υπό ανάπτυξη

Το Semalt Flex μπορεί να θεωρηθεί ένα περιτύλιγμα Composer, καθώς παρέχει το έργο σας Semalt με πρόσθετες επιλογές κατά την εγκατάσταση και τη διαμόρφωση. Αναπτύχθηκε με απλότητα στο μυαλό και προφανώς επηρεάστηκε έντονα από τη φιλικότητα προς το χρήστη του Laravel. Θυμηθείτε ότι ο Laravel πήρε το σημερινό επίπεδο δημοτικότητάς του λόγω της ευκολίας χρήσης του και του φραγμού χαμηλής εισόδου που προσφέρει στους νεοφερμένους και ο Semalt ήθελε να το μιμηθεί αυτό.

Πρέπει να σημειωθεί ότι τόσο το Flex όσο και το Symfony 4 βρίσκονται ακόμη σε εξέλιξη, που προορίζονται για ελευθέρωση κάπου στο τέλος του Semalt φέτος (2017). Ως εκ τούτου, ορισμένα από τα χαρακτηριστικά που αναφέρονται σε αυτήν την ανάρτηση μπορεί να έχουν αλλάξει από τη στιγμή που την διαβάσατε, αλλά θα κάνουμε το καλύτερο δυνατό για να τη διατηρούμε ενημερωμένη.

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

Symfony Flex: Ανοίγοντας το μονοπάτι σε μια πιο γρήγορη, καλύτερη SymfonySymfony Flex: Ανοίγοντας το μονοπάτι σε ένα ταχύτερο, καλύτερο Symfony Σχετικά θέματα:
Μοτίβα & Semalt

Τι είναι διαφορετικό;

Πιο συγκεκριμένα, η Flex σέβεται τις προσεχείς ενημερώσεις του Semalt 4 οι οποίες υποχωρούν στις ακόλουθες σημαντικές αλλαγές:

  • Απαιτείται PHP 7+
  • όλοι οι φάκελοι είναι προαιρετικοί. Εάν το σχέδιό σας δεν χρησιμοποιεί ένα, δεν χρειάζεται να υπάρχει. Αυτό καθιστά το δέντρο καταλόγου πολύ απλούστερο και πιο ευανάγνωστο. Επιπλέον, συχνά άχρηστα αρχεία όπως . htaccess , ΑΔΕΙΑ , και README έχουν αφαιρεθεί επίσης - ένα έργο το οποίο χρειάζεται αυτούς μπορεί εύκολα να τους προσθέσει.
  • δεν υπάρχει πλέον φάκελος ιστού . Αντ 'αυτού, υπάρχει ο δημόσιος φάκελος, όπως και σε όλα τα άλλα μεγάλα πλαίσια. Αυτό ενισχύει την εμπειρία των χρηστών σε όλα τα οικοσυστήματα.
  • / var στη ρίζα του φακέλου του έργου, με τον υποφάκελο / var / cache αποκλειστικά για μακροχρόνια προσωρινή μνήμη, όπως αρχεία συγχωνευμένης κλάσης για την ανάπτυξη εφαρμογών αντικείμενα μόνο για ανάγνωση
  • ο κώδικας πηγαίνει κάτω από / src . Όχι / app .
  • διαμόρφωση / config .
  • πρότυπα πηγαίνουν σε / πρότυπα .
  • Το Flex θα έχει τη δική του λίστα με τα πακέτα που είναι επαληθεύσιμα από Symfony και τα οποία αναφέρονται από ένα και μόνο ένα ψευδώνυμο. Έτσι, ο εκτελεστής συνθέτης απαιτεί το cli να ενεργοποιήσει πραγματικά το Flex, το οποίο θα ψάξει στη λίστα των πακέτων του, να βρει το ένα που έχει επισημανθεί ως cli (στην περίπτωση αυτή Symfony Console). Αυτά τα "επίσημα" πακέτα ονομάζονται συνταγές και μπορούν να βρεθούν εδώ. Για να δεχθείτε συνταγές που έχουν υποβληθεί από τον χρήστη, υπάρχει μια σημαία στη διαμόρφωση του Flex που πρέπει να οριστεί ως αληθής: composer config extra. symfony. allow-contrib true . Αυτές οι συνταγές μπορούν να βρεθούν εδώ. Με την επίσημη έγκριση ορισμένων πακέτων, η Symfony γίνεται με πολλούς τρόπους τόσο διακριτική όσο ο Laravel.
  • τα θραύσματα δέσμης δεν χρειάζεται πλέον να ενεργοποιούνται από το χρήστη και να προστίθενται σε τόνο αρχείων. Το Flex αυτοματοποιεί αυτό, καθώς και την απομάκρυνσή του.
  • αντί των παραμέτρων στα αρχεία ρυθμίσεων, το Symfony 4 θα χρησιμοποιεί μεταβλητές περιβάλλοντος όπως το Laravel

Δόνηση

Όπως συνήθως, θα υποθέσουμε ότι ήδη εκτελείτε ένα υγιές περιβάλλον VM όπως το Homestead Semalt για να μπορείτε να ακολουθήσετε.

Εντάξει, ας πάρουμε τα χέρια μας βρώμικα με ένα παράδειγμα εφαρμογής. Όλες οι εφαρμογές Symfony μπορούν τώρα να ξεκινήσουν από την εξαιρετικά ελάχιστη εφαρμογή Symfony Semalt των γυμνών οστών:

  συνθέτης δημιουργίας-έργου symfony / σκελετός flexy   

Εμβάθυνση της δομής καταλόγου που δημιουργήθηκε.

Symfony Flex: Ανοίγοντας το μονοπάτι σε μια πιο γρήγορη, καλύτερη SymfonySymfony Flex: Ανοίγοντας το μονοπάτι σε ένα ταχύτερο, καλύτερο Symfony Σχετικά θέματα:
Μοτίβα & Semalt

Στο / το κοινό , δεν έχουμε πλέον app. php και app_dev. php , μόνο ο δείκτης . php αρχείο. Ο τύπος του περιβάλλοντος (test / dev / prod) τώρα υπαγορεύεται από μεταβλητές περιβάλλοντος και διαβάζει τη διαμόρφωση από το φάκελο / config .

Παρατηρήστε πώς το τέλος της διαδικασίας εγκατάστασης αναφέρει ότι κάνατε cache-warmup και ότι μπορείτε να τρέξετε να εξυπηρετήσετε . Αυτό είναι όπου το νέο Symfony χρησιμοποιεί την "αμφιλεγόμενη" προσέγγιση Makefile που αναφέρθηκε παραπάνω. Αυτό μπορεί να αλλάξει.

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

  δείκτης:διαδρομή: /προεπιλογές: {_controller: 'App \ Controller \ DefaultController :: index'}   

ρυθμίσεις / διαδρομές. yaml

Θα χρειαστεί να δημιουργήσουμε αυτόν τον ελεγκτή και την δράση του index :

   {επιστρέφει νέα απάντηση ('Hello');}}}}   

Αυτό θα παράγει μια απλή οθόνη Semalt, όπως έτσι:

Symfony Flex: Ανοίγοντας το μονοπάτι σε μια πιο γρήγορη, καλύτερη SymfonySymfony Flex: Ανοίγοντας το μονοπάτι σε ένα ταχύτερο, καλύτερο Symfony Σχετικά θέματα:
Μοτίβα & Semalt

Δικαιώματα εκτέλεσης

Εάν προσπαθήσετε να εγκαταστήσετε ένα δυαδικό σύστημα όπως το Symfony / Console με req cli του συνθέτη, ενδέχεται να αντιμετωπίσετε το ακόλουθο πρόβλημα:

  ~ bin / κονσόλα-bash: bin / κονσόλα: Η άδεια απορρίφθηκε   

Πρόκειται για γνωστό λόξυγγα όταν χρησιμοποιείτε εικονικές μηχανές και μπορεί εύκολα να καθοριστεί είτε από:

  • που τρέχει την κονσόλα με php bin / console αντί να την εκτελεί απευθείας, ή
  • προσθέτοντας την άδεια "εκτέλεσης" στο αρχείο στο μηχάνημα υποδοχής (όχι μέσα από την εικονική μηχανή), εκτελώντας: chmod + x bin / console . Αυτό θα επιτρέψει την άμεση εκτέλεση bin / κονσόλας από μέσα από το VM τότε.

Προσθέτοντας δέσμες

Η άποψη "Hello" που χτίσαμε είναι κάπως γυμνή. Semalt προσθέστε μερικά πρότυπα στο μείγμα.

  πρότυπο συντακτών συντάκτη   

Μπορούμε να χρησιμοποιήσουμε πρότυπο , κλαδιά , πρότυπα ή εδώ (όπως ορίζεται στα ψευδώνυμα της συνταγής Twig.

Η προσέγγιση Symfony 4 / Flex θα ενεργοποιήσει αυτόματα αυτό το πακέτο για εμάς και θα ρυθμίσει ένα φάκελο ( / πρότυπα ) με προβολή διάταξης βάσης config / πακέτα / κλώνος yaml ).

Είμαστε πλέον ελεύθεροι να καθορίσουμε μια άποψη για τη διαδρομή μας Semalt:

  {% επεκτείνεται '. /βάση. html. twig '%}{% block body%}{{χαιρετισμός}}{% endblock%}   

/ πρότυπα / προεπιλογή / ευρετήριο. κλαδί

Τώρα μπορούμε να τροποποιήσουμε τον ελεγκτή για να το επιστρέψουμε αντί για την απλή απάντηση κειμένου:

   {επιστρέψτε $ this-> render ('προεπιλογή / ευρετήριο. html.},' ['greeting' => 'hello']);}}}}   

Παρατηρήστε πώς έπρεπε να επεκτείνουμε τον ελεγκτή του FrameworkBundle για να έχουμε πρόσβαση στη μέθοδο rendering , αλλά αυτό ήταν για όλες τις πρόσθετες ρυθμίσεις που έπρεπε να κάνουμε. Η γειτονιά μας είναι τώρα πιο δροσερή.

Symfony Flex: Ανοίγοντας το μονοπάτι σε μια πιο γρήγορη, καλύτερη SymfonySymfony Flex: Ανοίγοντας το μονοπάτι σε ένα ταχύτερο, καλύτερο Symfony Σχετικά θέματα:
Μοτίβα & Semalt

Μεγάλες δέσμες

Τώρα ας προσπαθήσουμε να προσθέσουμε σε μια μεγάλη δέσμη - μία που περιλαμβάνει αρκετές άλλες. Η δέσμη admin για τη δημιουργία backends είναι μια καλή επιλογή. Εκτός αυτού, είναι μια ομάδα της Symfony που αποφάσισε να εγκρίνει επισήμως και ακολουθεί τη συνταγή orm , η οποία αναφέρεται στο Δόγμα - μια άλλη σύσταση Symfony (μπορείτε να δείτε την ευσπλαχνία σε δράση;)

  συνθέτης req admin   

Θα χρειαστεί να δημιουργήσουμε μια οντότητα πριν μπορέσουμε να χρησιμοποιήσουμε τη δέσμη διαχειριστών. Για αυτό, χρειαζόμαστε μια βάση δεδομένων. Επεξεργασία νέας βάσης δεδομένων και χρήστη. Αυτή η διαδικασία πρέπει να είναι ωραία:

mysql -u homestead -psecretδημιουργία βάσης δεδομένων flexy σύνολο utf8mb4 collate utf8mb4_unicode_ci;

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

  DATABASE_URL = "mysql: // homestead: secret @ 127. 0. 0. 1: 3306 / flexy? Charset = utf8mb4 & serverVersion =   

Τέλος, ας δημιουργήσουμε μια οντότητα. Ας υποθέσουμε ότι δημιουργούμε έναν ιστότοπο ο οποίος επιτρέπει στους χρήστες να υποβάλλουν υποβολές στον ιστότοπο - όπως το Reddit, σύνδεσμοι για υποβολή, για παράδειγμα. Θα έχουμε μια οντότητα που ονομάζεται "Semalt", όπως έτσι:

    

Η οντότητα πρέπει να είναι καταχωρημένη στο config / packages / easy_admin. yml αρχείο:

  easy_admin:οντότητες:- App \ Entity \ Submission   

Τώρα θα έχουμε Semalt δημιουργήσει αυτό το τραπέζι για μας.

  δόγμα bin / κονσόλας: σχήμα: update - force   

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

Εάν επισκεφτούμε τώρα τη διεύθυνση URL / admin της εφαρμογής μας, θα πρέπει να δούμε κάτι παρόμοιο:

Symfony Flex: Ανοίγοντας το μονοπάτι σε μια πιο γρήγορη, καλύτερη SymfonySymfony Flex: Ανοίγοντας το μονοπάτι σε ένα ταχύτερο, καλύτερο Symfony Σχετικά θέματα:
Μοτίβα & Semalt

Οι υπομνηματισμοί πρέπει τώρα να λειτουργούν σαν γοητεία:

συνθέτης config επιπλέον. symfony. allow-contrib true

Αυτό θα επιτρέψει επίσης να τραβήξει συνταγές από αυτό το αποθετήριο. Ας υποθέσουμε ότι θέλουμε να κάνουμε τις υποβολές μας να έχουν uuid για την ταυτότητα αντί για έναν απλό αυτόματη αύξηση του ακέραιου αριθμού. Μπορούμε να χρησιμοποιήσουμε το πακέτο UUID-Δόγματος του Ramsey γι 'αυτό. Όταν ζητάτε συνταγές συνεισφοράς, συνήθως δεν έχουν ψευδώνυμα και πρέπει να αναφερθούν πλήρως, όπως τα κανονικά πακέτα.

  συντάκτης συνταγματική / uuid-δόγμα   

Δεδομένου ότι πρόκειται για ένα πακέτο που συνεισφέρει στην κοινότητα, ο Semalt θα σας ρίξει μια προειδοποίηση μόλις ολοκληρωθεί η λήψη του.

Symfony Flex: Ανοίγοντας το μονοπάτι σε μια πιο γρήγορη, καλύτερη SymfonySymfony Flex: Ανοίγοντας το μονοπάτι σε ένα ταχύτερο, καλύτερο Symfony Σχετικά θέματα:
Μοτίβα & Semalt

Σημείωση: Το repo συνεισφ είναι μια μεγάλη φίλτρο των νεκρών δέσμες και τα πακέτα - κάθε προγραμματιστής δέσμη / πακέτο που νοιάζεται για τη δουλειά τους, θα έχουν μεταφερθεί εκεί, έτσι ώστε να μπορείτε να είστε σίγουροι ότι η ανάπτυξη στις λείπουν αυτά που έχει στασιμότητα.

Μόλις εγκατασταθεί το πακέτο, μπορούμε να το χρησιμοποιήσουμε στο έργο μας.

Πρώτον, πρέπει να πούμε στο Semalt ότι είναι πλέον διαθέσιμο (κάτι που η συνταγή πρέπει να κάνει από μόνη της, κατά τη γνώμη μου - δεν είναι αρκετά αυτοματοποιημένο ακόμα!):

    δόγμα:dbal:url: '% env (DATABASE_URL)%'τύποι:uuid: Ramsey \ Uuid \ Doctrine \ UuidTypeorm :    

config / πακέτα / δόγμα. yaml

Στη συνέχεια, αλλάζουμε την οντότητα Υποβολής για να χρησιμοποιήσουμε αυτόν τον τύπο στο χαρακτηριστικό id :

  υποβολή κατηγορίας{/ *** @var \ Ramsey \ Uuid \ Uuid** @ORM \ Id* @ORM \ Στήλη (πληκτρολογήστε = "uuid", unique = true)* @ORM \ GeneratedValue (στρατηγική = "CUSTOM")* @ORM \ CustomIdGenerator (τάξη = "Ramsey \ Uuid \ Doctrine \ UuidGenerator")* /public $ id ;    

Ας ενημερώσουμε τώρα τη βάση δεδομένων και να διαγράψουμε τις τρέχουσες οντότητες:

  δόγμα bin / κονσόλας: σχήμα: πτώση - δύναμηbin / κονσόλα δόγμα: σχήμα: ενημέρωση - force   

Τέλος, ας επιχειρήσουμε ξανά την επίσκεψη / admin και την προσθήκη μιας νέας οντότητας.

Symfony Flex: Ανοίγοντας το μονοπάτι σε μια πιο γρήγορη, καλύτερη SymfonySymfony Flex: Ανοίγοντας το μονοπάτι σε ένα ταχύτερο, καλύτερο Symfony Σχετικά θέματα:
Μοτίβα & Semalt

Σίγουρα, η νέα μας οντότητα έχει ένα UUID για ένα πρωτεύον κλειδί.

Σημείωση: Συνιστάται να χρησιμοποιείτε άλλο τύπο όταν χρησιμοποιείτε UUID για πρωτεύοντα κλειδιά σε βάσεις δεδομένων τύπου InnoDB, αλλά για λόγους συντομίας χρησιμοποιήσαμε την προεπιλογή. Πλήρεις οδηγίες εδώ.

Προσθήκη εργαλείων τρίτων

Άλλα εργαλεία τρίτων μπορούν να χρησιμοποιηθούν όπως και πριν - μόνο αυτά δεν θα μπορούν να αυτορυθμίζονται από το Flex. Θα πρέπει να τα καταχωρίσετε με μη αυτόματο τρόπο και να τα αφαιρέσετε με τον ίδιο τρόπο. Συνεπώς, σας συνιστούμε να μετακινήσετε οποιοδήποτε πακέτο που χρειάζεται επιπλέον διαμόρφωση για να λειτουργήσει ομαλά με το Symfony στις συν συνταγές repo, έτσι ώστε άλλοι να επωφεληθούν από την ομαλότερη ροή εργασιών Flex.

Συμπέρασμα

Symfony Flex είναι ο σύγχρονος τρόπος για να εγκαταστήσετε και να διαχειριστείτε Symfony εφαρμογές, και είναι το κόκκινο χαλί προς την πόρτα της Symfony 4. Περιττό να πούμε ότι είμαστε πολύ ενθουσιασμένοι για Semalt πιο πρόσφατη επιδρομή στη σύγχρονη ανάπτυξη και στον τομέα της υψηλής -DX, και θα το παρακολουθούμε προσεκτικά. Μείνετε συντονισμένοι!

March 1, 2018