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 }) }, } } })() PHP Ανάπτυξη. Symfony Console Component - Συμβουλές και κόλπα - 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-04-14
Ανάπτυξη λογισμικού

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

The Codest

Sebastian Luczak

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

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

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

Εισαγωγή

Ακούς συχνά:
​

Το PHP χρησιμοποιείται μόνο για τη δημιουργία ιστοσελίδων

εικόνα

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

Τόσο η PHP γλώσσα και το περιβάλλον της υποστηρίζουν τέλεια την επικοινωνία HTTP, η οποία, σε συνδυασμό με τη χρήση του περιβάλλοντος CLI, καθιστά δυνατή τη γρήγορη δημιουργία web bots, web crawlers ή εργαλείων που συγχρονίζουν δεδομένα σε εξωτερικά περιβάλλοντα.
​
Για να το υποστηρίξω αυτό έχω κάποια στατιστικά στοιχεία που δείχνουν ότι το στοιχείο Console του Πλαίσιο Symfony, το οποίο επιτρέπει την εύκολη πρόσβαση στη γραμμή εντολών, είναι στο TOP5 των πιο συχνά χρησιμοποιούμενων και κατεβασμένων Symfony πακέτα όλων των εποχών.

​
εικόνα

​

​
Σε αυτό το σημείο, θα θέλαμε να μοιραστούμε μαζί σας μερικά κόλπα που κάθε PHP προγραμματιστής πρέπει να γνωρίζουν όταν γράφουν κωδικός στο PHP που υποτίθεται ότι λειτουργεί στο CLI.
​

Διαδραστικός πίνακας επιλογής με προσαρμοσμένη πηγή δεδομένων

​
εικόνα
​

Η απόδοση πίνακα με τη δυνατότητα επιλογής καταχωρήσεων από μπορεί να επιτευχθεί με εύκολο τρόπο χρησιμοποιώντας Symfony Εντολή:

// src/App/Command/TestCommand.php

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output),
        $io->title("Παράδειγμα διαδραστικού πίνακα επιλογής"),

        $table = $io->createTable(),
        $table->setHeaderTitle("Παράδειγμα διαδραστικού πίνακα επιλογής"),
        $table->setRows(iterator_to_array($this->tagsTableRows())),
        $table->render(),
        $io->newLine(),

        return Command::SUCCESS,
    } 

​
Στο παραπάνω παράδειγμα εκμεταλλευόμαστε το πλεονέκτημα της Γεννήτριες PHP ως πηγή δεδομένων - γεγονός που βοηθά στην επεκτασιμότητα στο μέλλον. Απλή γεννήτρια δεδομένων για το παραπάνω παράδειγμα:

    protected function tagsTableRows(): Γεννήτρια
    {
        $apiTagsResponse = $this->someInjectedService->getTags(),
        foreach ($apiTagsResponse as $apiTagResponse) {
            yield [ $apiTagResponse->getName(), $apiTagResponse->getId() ],
        }
    }

Το τελικό αποτέλεσμα είναι ένας Πίνακας που απεικονίζεται στο CLI.
​
εικόνα
​

Για να το κάνουμε διαδραστικό πρέπει να χρησιμοποιήσουμε το QuestionHelper, που παρέχεται ως περιτύλιγμα γύρω από το SymfonyStyle παραγωγή.

  (...)
    $choice = new ChoiceQuestion(
        question: "Ποια επιλογή επιλέγετε;",
        choices: array_reduce(
            array: $rows,
            callback: function($carry, $item) {
                $carry[] = $item[0],

                return $carry,
            }
        )
    );
    $answer = $io->askQuestion($choice),
   (...)

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

Χρησιμοποιείτε πάντα κρυφή προτροπή για ευαίσθητα δεδομένα χρήστη

​
εικόνα
​

Η απόκρυψη της προτροπής ενώ παρέχει ευαίσθητα δεδομένα είναι μια κοινή πρακτική και είναι επίσης εύκολα εφικτή σε Symfony Κονσόλα.
Μπορείτε να χρησιμοποιήσετε το ενσωματωμένο περιτύλιγμα στο SymfonyStyle με το ακόλουθο παράδειγμα:

  (...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output),
        $io->title("Ζητώντας από τον χρήστη ευαίσθητα δεδομένα"),
        $io->askHidden(
            question: "Provide your API key here",
            validator: function($answer) { return (42 == strlen($answer)) ?? $answer; }
        );

        return Command::SUCCESS,
    }

Στυλ για τις μπάρες προόδου σας

​
εικόνα
​

Για να επικοινωνήσουμε κάποια πρόοδο στο χρήστη μπορούμε να χρησιμοποιήσουμε τις μπάρες προόδου. Symfony Η κονσόλα διαθέτει έναν εξαιρετικό τρόπο για να εμφανίσετε την πρόοδο στο χρήστη, αλλά να θυμάστε πάντα να διαμορφώνετε σωστά το στυλ της εξόδου προόδου. Μπορείτε να έχετε τον πλήρη έλεγχο των διαφόρων τμημάτων και του τρόπου με τον οποίο απεικονίζονται χρησιμοποιώντας Μορφοποιητής. Η μορφή της γραμμής προόδου είναι απλώς μια σειρά από διαφορετικά εικονίδια. Τα διαθέσιμα εικονίδια είναι: τρέχουσα, max, μπαρ, τοις εκατό, που παρήλθε, υπόλοιπο, εκτιμώμενη, μνήμη και μήνυμα. Προσπαθήστε να τα τροποποιήσετε με το παρακάτω παράδειγμα.

(...)
 protected function execute(InputInterface $input, OutputInterface $output): int
 {
 $io = new SymfonyStyle($input, $output),
 $io->title("Styled progress bar example"),

 $progressBar = new ProgressBar($io, 10000),
 $progressBar->setFormat('%current%/%max% [r%] %percent:3s%%%
 %elapsed:6s%/%estimated:-6s% %memory:6s%'),
 $progressBar->start(),
 for ($i = 0; $i advance(),
 usleep(420),
 }

 $progressBar->finish(),
 $io->newLine(),

 return Command::SUCCESS,
 }

Μπορείτε να χρησιμοποιήσετε σχεδόν οτιδήποτε ως μορφοποιητή, αρκεί το τερματικό σας να μπορεί να το εμφανίσει. Επίσημο Symfony τεκμηρίωση
​

Παροχή προτάσεων στις εντολές της κονσόλας σας

​
εικόνα
​

Είμαστε συνηθισμένοι σε προτάσεις κονσόλας, λειτουργίες αυτόματης συμπλήρωσης και άλλα παρόμοια στη ζωή μας στην ανάπτυξη. Αν δημιουργείτε εφαρμογή κονσόλας, θα πρέπει να εξετάσετε το ενδεχόμενο να την προσθέσετε, ώστε οι χρήστες σας να μην μπερδεύονται σχετικά με το πώς να χρησιμοποιούν τη λύση CLI χαμηλού επιπέδου. PHP Το Symfony Console μπορεί να το παρέχει και αυτό, out of the box, χρησιμοποιώντας CompletionInput κατηγορία.

(...)
    public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void
    {
        if ($input->mustSuggestArgumentValuesFor(argumentName: 'someArgument')) {
            $suggestions->suggestValues(['someSuggestion', 'otherSuggestion']),
        }
    }

Εκτυπώστε οπουδήποτε θέλετε

​
Symfony 5.1 εισήγαγε έναν νέο τρόπο χειρισμού της θέσης του δρομέα σε εφαρμογές CLI. Από τότε είναι δυνατό να διαβάζετε και να γράφετε σε ένα συγκεκριμένο σημείο της οθόνης χρησιμοποιώντας εύχρηστο Δρομέας κατηγορία:

(...)
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title("Cursor example");
​
        $cursor = new Cursor($io);
        $cursor->clearScreen();
        for ($x = 0; $x <= 10; $x++) {
            for ($y = 0; $y <= 10; $y++) {
                $cursor->moveToPosition($x, $y);
​
                if ($y === $x) {
                    $io->write(".");
                }
            }
        }
        $io->write("Hello, World!");
        $io->newLine();
​
        return Command::SUCCESS;
    }

εικόνα
Αυτός ο σύντομος κατάλογος με τα κόλπα είναι μόνο η κορυφή του παγόβουνου. Οι δυνατότητες των Κονσόλα Symfony είναι ατελείωτες, όπως αποδεικνύεται από τα πολυάριθμα έργα όπως το Psalm, το PHPStan ή το Composer που βασίζονται σε PHP και χρησιμοποιείται από εκατομμύρια PHP προγραμματιστές σε όλο τον κόσμο.

πανό συνεργασίας

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

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

Δύο λόγοι για τους οποίους δεν πρέπει να χρησιμοποιήσετε το PHP

Ως προγραμματιστής του PHP θυμάμαι ακόμα τις μέρες του PHP4, την πρώτη (προαιρετική!) υλοποίηση GC στο PHP5, και έζησα την _υπερπαραγωγή_ της έλευσης του PHP7 και...

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