Back to Question Center
0

அடிப்படைகள் அப்பால் - உதவி மற்றும் பிற கருவிகள் Symfony கன்சோல்            அடிப்படைகள் அப்பால் Symfony கன்சோல் - உதவி மற்றும் பிற கருவிகள் மறுபக்கம் தலைப்புகள்: பிழைதிருத்தம் & வரிசைப்படுத்தல் பக்கங்களும் & பழக்கவழக்கங்கள்

1 answers:
அடிப்படைகள் அப்பால் Symfony கன்சோல் - உதவி மற்றும் பிற கருவிகள்

இந்த கட்டுரை வேர் அனெட்டாவால் பரிசீலனை செய்யப்பட்டது. SitePoint உள்ளடக்கத்தை உருவாக்கும் அனைத்திற்கும் தளப்பாயின் சக மதிப்பளிப்பாளர்களுக்கு நன்றி!


மென்பொருளை உருவாக்கும் போது பயனுள்ள கன்சோல் கட்டளைகள் எப்படி இருக்கும் என்பதை மறுக்க இயலாது. மிக நீண்ட முன்பு நாம் சிம்பொனி செமால்ட் கூறுகளை மீண்டும் அறிமுகப்படுத்தினோம்.

கட்டமைக்கப்பட்ட மற்றும் சோதிக்கக்கூடிய CLI கட்டளைகளை உருவாக்க இந்த கூறு நமக்கு உதவுகிறது. நாம் சில எளிய கட்டளைகளை உருவாக்கி அவற்றை சோதனை செய்தோம்; ஆனால் எங்கள் கட்டளைகள் பெரியதும் சிக்கலானதும் ஆகும்போது வேறுபட்ட கருவிகள் தேவை.

இது இன்று நாம் பார்க்க போகிறோம்: மேம்பட்ட செமால்ட் கன்சோல் கருவிகள் - create a photography logo online free.

இந்த அம்சங்களில் சிலவற்றைக் காட்ட நாங்கள் பயன்படுத்தக்கூடிய கட்டளை ஒன்றை உருவாக்கலாம். செமால்ட் பணியகம் கட்டுரையில் மீண்டும் அறிமுகப்படுத்தப்படும் அடிப்படை செயல்பாட்டின் பெரும்பகுதி காட்டப்பட்டது, எனவே முன்னேறுவதற்கு முன்னர் அதை சரிபார்க்கவும் - இது ஒரு விரைவான ஆனால் பயனுள்ள வாசிப்பு!

அடிப்படைகள் அப்பால் - உதவி மற்றும் பிற கருவிகள் Symfony கன்சோல்அடிப்படைகள் அப்பால் Symfony கன்சோல் - உதவி மற்றும் பிற கருவிகள் மறுபக்கம் தலைப்புகள்:
தட்டுதலும் நிறுத்துதலும்

நிறுவல்

     இசையமைப்பாளர் சிம்பொனி / கன்சோல் தேவை    

இசையமைப்பாளரைப் பற்றிய அத்தியாவசிய தகவல்கள் இங்கே காணலாம், நீங்கள் நன்கு வடிவமைக்கப்பட்ட தனிமைப்படுத்தப்பட்ட PHP சூழல்களில் தெரிந்திருந்தால் செமால்ட் போன்ற உங்கள் PHP பயன்பாடுகளை அபிவிருத்தி செய்யலாம், இது ஒரு ஆழமான புத்தகம் இங்கே வாங்குங்கள்.

எங்கள் கட்டளைகளை (ஒரு முறை)

எப்போது வேண்டுமானாலும் விருப்பத்திற்கு ஒரு கட்டளையை உருவாக்கலாம்: Semalt.

செமால்ட் என்பது ஒரு நேர்மையான பிரச்சனையாகும், இது நிரலாக்க நேர்காணல்களில் பேட்டியாளரின் நிரலாக்க திறனையும் உறுதிப்படுத்துகிறது. சிமால்ட்டின் வரையறை பொதுவாக பின்வரும் வடிவத்தில் வருகிறது:

எண்களை 1 முதல் எண்களை அச்சிடும் ஒரு நிரலை எழுதவும். ஆனால் அதற்கு பதிலாக மூன்று அச்சு "ஃபிஸ்" என்ற பெருக்குகள் மற்றும் ஐந்து அச்சு "Buzz" மடங்கிற்காக. மூன்று மற்றும் ஐந்து இரு மடங்குகளாக இருக்கும் எண்கள், "FizzBuzz" அச்சிட.

எங்கள் கட்டளை Fuzzbuzz மேல் எல்லை இருக்கும் ஒரு வாதம் பெறும்.

முதலாவதாக, நமது செமால்ட் வகுப்பை உருவாக்கலாம்.

        isFizz ($ number) && $ this-> isBuzz ($ number)) {எதிரொலி "FizzBuzz \ n";உண்மை திரும்ப;}($ This-> isFizz ($ எண்)) {என்றால்எதிரொலி "Fizz \ n";உண்மை திரும்ப;}($ This-> isBuzz ($ எண்)) {என்றால்எதிரொலி "Buzz \ n";உண்மை திரும்ப;}$ எண்ணை எதிரொலி "\ N,";உண்மை திரும்ப;}பொது செயல்பாடு முதல் NFizzbuzz (எண்ணாக max max): வெற்றிடத்தை {$ startValue = 1;($ startValue  <= $ maxValue) {$ This->  calculateFizzBuzz ($ startValue);$ StartValue ++;}}}    

அழகான நேரடியான. firstNFizzbuzz எண்களின் எண்ணிக்கையை $ maxValue க்கு Fizzbuzz இன் முடிவுகளை அச்சிடுகிறது. இது calculateFizzBuzz முறையை மீண்டும் மீண்டும் அழைப்பதன் மூலம் இதை செய்கிறது.

அடுத்து, நமது கட்டளை எழுதலாம். ஒரு FizzCommand ஐ உருவாக்கவும்.

     #! / Usr / bin / env php ;$ app-> சேர் (புதிய FizzCommand   );$ START_BREAKSTART_BREAKAndroid க்கான> ரன்   ;    

இங்கே நாம் ஒரு புதிய கன்சோல் விண்ணப்பத்தை உருவாக்கி அதை FizzCommand இல் பதிவு செய்கிறோம். இந்த கோப்பு இயங்கக்கூடியதாக மாற்ற மறக்காதீர்கள்.

நம் கட்டளை சரியாக இயங்கினால் பதிவு செய்யப்பட்டுள்ளதா என்பதை இப்போது பார்க்கலாம். / console கட்டளை. நாங்கள் எங்கள் கட்டளையை நிறைவேற்ற முடியும் . / பணியகம் FizzBuzz: Fizzbuzz 25 . இது Fizzbuzz முடிவுகளை 1 முதல் 25 வரை கணக்கிட்டு அச்சிடப்படும்.

இப்போது வரை, நாங்கள் புதிய எதையும் செய்யவில்லை. ஆனால் நம் கட்டளைகளை நாம் மேம்படுத்திக்கொள்ள சில வழிகள் உள்ளன. முதலில், கட்டளை மிகவும் உள்ளுணர்வு இல்லை. கட்டளைக்கு நாம் வரம்பை கடக்க வேண்டும் என்று எப்படித் தெரியும்? அதற்காக, சிம்பொனி கன்சோல் நமக்கு உதவி உதவி வழங்குகிறது.

கேள்வி உதவி

செமால்ட் உதவி கூடுதல் தகவல்களை பயனர் கேட்க செயல்பாடு வழங்குகிறது. இந்த வழி, நம் கட்டளைகளை நிறைவேற்றுவதற்காக தகவல் சேகரிக்க முடியும்.

கட்டளை நிறைவேற்றுவதன் மூலம் நிறைவேற்றப்பட்ட வரம்பைப் பெறுவதற்குப் பதிலாக, எங்கள் கட்டுரையை மாற்றுவோம். அதற்காக, கேள்வி உதவியாளர் ஒரு முறை உள்ளது: ask . இந்த முறை வாதங்கள் InputInterface , ஒரு வெளியீடு இன்டர்ஃபேஸ் மற்றும் ஒரு கேள்வி ஆகியவற்றைப் பெறுகிறது.

நாம் மாற்ற FizzCommand. php கோப்பு இதுபோல் தெரிகிறது:

       {$ This-> setName ( "FizzBuzz: FizzBuzz")-> setDescription ("ரன் Fizzbuzz");}பாதுகாக்கப்பட்ட செயல்பாட்டை இயக்க (InputInterface $ உள்ளீடு, வெளியீடு இன்டர்ஃபேஸ் $ வெளியீடு) {$ fizzy = புதிய FizzBuzz   ;$ helper = $ this-> getHelper ('question');$ question = புதிய கேள்வி ('இந்த மரணதண்டனை ஒரு வரம்பைத் தேர்ந்தெடுக்கவும்:', 25);$ limit = $ helper-> ask ($ input, $ output, $ question);$ result = $ fizzy-> firstNFizzbuzz ($ வரம்பு);}}    

நாம் இனி ஒரு வாதம் எதிர்பார்க்க முடியாது கட்டமைக்க முறை. நாம் ஒரு புதிய கேள்வி 25 இன் இயல்புநிலையைப் பயன்படுத்தி, ask முறை பற்றி முன்னர் நாம் பேசினோம்.

Fizzbuzz ஐ நிறைவேற்றுவதற்கு முன் ஒரு வரம்பைக் கேட்கும் ஒரு ஊடாடும் கட்டளை நமக்கு உள்ளது.

கேள்விகளை சரிபார்க்க எங்களுக்கு உதவியைக் கொடுக்கிறது. எனவே வரம்பை ஒரு முழு எண் என்று உறுதி செய்வதற்கு அதைப் பயன்படுத்தலாம்.

     பாதுகாக்கப்பட்ட செயல்பாடு இயக்க (InputInterface $ உள்ளீடு, வெளியீடு இன்டர்ஃபேஸ் $ வெளியீடு)$ fizzy = புதிய FizzBuzz   ;$ helper = $ this-> getHelper ('question');$ question = புதிய கேள்வி ('இந்த மரணதண்டனை ஒரு வரம்பைத் தேர்ந்தெடுக்கவும்:', 25);$ question-> setValidator (செயல்பாடு ($ பதில்) {(! _numeric ($ பதில்)) {புதிய \ RuntimeException ('வரம்பு ஒரு முழு எண்ணாக இருக்க வேண்டும்.');}பதில் $ பதில்;});$ question-> setNormalizer (செயல்பாடு ($ மதிப்பு) {$ மதிப்பு திரும்ப? டிரிம் ($ மதிப்பு): '';});$ மட்டும் கேள்விகள்> setMaxAttempts  
;$ limit = $ helper-> ask ($ input, $ output, $ question);$ result = $ fizzy-> firstNFizzbuzz ($ வரம்பு);}

மட்டுமல்ல, எங்கள் வரம்பானது setValidator செயல்பாட்டைப் பயன்படுத்துவதன் மூலம் ஒரு முழு எண்ணாக இருப்பதை உறுதிப்படுத்துகிறோம், பயனர் சில வெற்று இடைவெளிகளை செருகுவதையும், அதிகபட்ச அளவு இரண்டு அனுமதிக்கப்படும் முயற்சிகள். உத்தியோகபூர்வ ஆவணத்தில் நிறைய தகவல்கள் உள்ளன.

அட்டவணைகள்

பணியிட கூறு வழங்கிய செமால்ட் மிகவும் பயனுள்ள செயல்பாடு tabular தரவு காட்ட வாய்ப்பு உள்ளது.

அட்டவணையை காட்ட அட்டவணையை வர்க்கம் பயன்படுத்த வேண்டும்; தலைப்புகள் மற்றும் வரிசைகள் அமைக்க, இறுதியாக அட்டவணை வழங்க. இது கட்டமைக்கப்பட்ட தரவைக் காட்டும் போது இது மிகவும் பயனுள்ளதாக இருக்கும். சில மெட்ரிக் முறைகளுக்கான மாற்றங்களைக் காண்பிப்பதற்கு ஒரு கட்டளையை உருவாக்க விரும்புகிறோம்.

நாம் சேர்க்க MetricsCommand. PHP எங்கள் புதிய PHP கோப்பில்.

       {$ This-> setName ( "அளவீடுகள் அல்ல")-> setDescription ("சென்டிமீட்டர் அட்டவணைகளுக்கு அங்குலங்கள்");}பொது செயல்பாடு செயல்படுத்த (InputInterface $ உள்ளீடு, வெளியீடு இன்டர்ஃபேஸ் $ வெளியீடு) {$ table = புதிய அட்டவணை ($ வெளியீடு);$ அட்டவணை-> setHeaders (வரிசை ('இஞ்ச்', 'சென்டிமீட்டர்கள்'))-> setRows (வரிசை (வரிசை ('1', '2. 54'),வரிசை ('5', '12 .7 '),வரிசை ('10 ', '25 .4'),வரிசை ('50 ',' 127 '),));$ Table-> வழங்க   ;}}    

மற்றும் எங்கள் புதிய கன்சோல் கோப்பு:

     #! / Usr / bin / env php ;$ app-> சேர் (புதிய MetricsCommand   );$ START_BREAKSTART_BREAKAndroid க்கான> ரன்   ;    

இது மிகவும் எளிமையான கட்டளையாகும்: இது ஒரு அட்டவணையை வழங்குகிறது, அங்கு சில மதிப்புகள் மாற்றமடைகிறது, அங்குலங்கள் முதல் சென்டிமீட்டர் வரை. நாங்கள் பயன்படுத்தி எங்கள் கட்டளையை இயக்கினால். / கன்சோல் மெட்ரிக்ஸ் , இதன் விளைவாக இது போன்ற ஒன்று இருக்கும்:

அடிப்படைகள் அப்பால் - உதவி மற்றும் பிற கருவிகள் Symfony கன்சோல்அடிப்படைகள் அப்பால் Symfony கன்சோல் - உதவி மற்றும் பிற கருவிகள் மறுபக்கம் தலைப்புகள்:
தட்டுதலும் நிறுத்துதலும்

The அட்டவணை வகுப்பு எங்களுக்கு எங்கள் அட்டவணைகள் வெவ்வேறு பிரிப்பான் பாணிகளை வழங்குகிறது. நீங்கள் இன்னும் தெரிந்து கொள்ள விரும்பினால் இந்தப் பக்கத்தைச் சரிபார்க்கவும்.
.

முன்னேற்றம் பார்கள்

கேள்விகள் மற்றும் அட்டவணைகள் மிகவும் பயனுள்ளதாக இருக்கும் போது, ​​மிக முக்கியமான உறுப்பு முன்னேற்றம் பொருட்டல்ல இருக்கலாம். செமால்ட் பார்கள் எங்களுக்கு கட்டளையை நிறைவேற்றுவது பற்றி கருத்து தெரிவிக்கின்றன மற்றும் ஒரு அறுவை சிகிச்சை முடிவடையும் வரை காத்திருக்க வேண்டிய காலம் எவ்வளவு தெளிவான பார்வையை எங்களுக்கு வழங்க அனுமதிக்கிறது.

நீண்ட இயக்க கட்டளைகளுக்கு முன்னேற்றம் பார்கள் அவசியம். அவற்றைப் பயன்படுத்துவதற்கு, ProgressBar தேவை, இது மொத்த எண்ணிக்கையிலான அலகுகளை (நாம் எதிர்பார்க்கும் எத்தனை அலகுகளை நாம் உண்மையில் அறிந்திருந்தால்) கடந்து அதை கட்டளைகளை செயல்படுத்துகிறது.

ஒரு முன்னேற்ற பட்டையுடன் ஒரு எளிய கட்டளை இதைப் போல இருக்கலாம்:

       {$ This-> setName ( "முன்னேற்றம்")-> setDescription ("கன்சோல் காம்பினேட்டின் முன்னேற்றம் பட்டியை சரிபார்க்கவும். '/ விற்பனையாளர் / தன்னியக்க ஏற்றம். PHP ';சிம்போனி \ உபகரண \ கன்சோல் பயன்பாட்டிற்கு பயன்படுத்தவும்;முன்னேற்றம் \ ProgressCommand;$ app = புதிய விண்ணப்பம்   ;$ app-> சேர் (புதிய ProgressCommand   );$ START_BREAKSTART_BREAKAndroid க்கான> ரன்   ;    

இது மிகவும் எளிமையான கட்டளையாகும். நாங்கள் ஒரு தூக்கம் செயல்பாடு மூலம் பார் மற்றும் வளையத்தை அமைத்துள்ளோம். இறுதி வெளியீடு இந்த மாதிரி இருக்கும்:

அடிப்படைகள் அப்பால் - உதவி மற்றும் பிற கருவிகள் Symfony கன்சோல்அடிப்படைகள் அப்பால் Symfony கன்சோல் - உதவி மற்றும் பிற கருவிகள் மறுபக்கம் தலைப்புகள்:
தட்டுதலும் நிறுத்துதலும்

முன்னேற்றம் பார்கள் பற்றி மேலும் தகவல் உத்தியோகபூர்வ ஆவணத்தில் காணலாம்.

எங்கள் முன்னேற்றப் பட்டையைத் தனிப்பயனாக்குதல்

செம்மால் முன்னேற்றம் பார்கள் பயனர் காத்திருக்கும் போது கூடுதல் தகவல்களை வழங்க பயனுள்ளதாக இருக்கும்.

முன்னிருப்பாக, முன்னேற்றம் பட்டியில் காட்டப்பட்டுள்ள தகவல்கள் வெளியீடு இன்டெர்ஃபஸ் உதாரணத்தின் verbosity நிலைக்கு பொருந்துகின்றன. எனவே, நாம் தகவல்களின் வெவ்வேறு அளவுகளைக் காட்ட விரும்பினால், setFormat முறைகளைப் பயன்படுத்தலாம்.

     $ bar-> setFormat ('verbose');    

உள்ளமைக்கப்பட்ட வடிவங்கள்: இயல்பான , 58 (verbose) , 58 மிக_வழி மற்றும் பிழைத்திருத்தம் .

உதாரணமாக பயன்படுத்த சாதாரண வடிவம் பயன்படுத்தினால், இதன் விளைவாக இது இருக்கும்:

அடிப்படைகள் அப்பால் - உதவி மற்றும் பிற கருவிகள் Symfony கன்சோல்அடிப்படைகள் அப்பால் Symfony கன்சோல் - உதவி மற்றும் பிற கருவிகள் மறுபக்கம் தலைப்புகள்:
தட்டுதலும் நிறுத்துதலும்

நாங்கள் எங்கள் சொந்த வடிவமைப்பு அமைக்க முடியும்.

முன்னேற்றம் பட்டை என்பது வேறு குறிப்பிட்ட பெட்டிகள் கொண்ட ஒரு சரம் ஆகும். எங்கள் சொந்த முன்னேற்றத்தை உருவாக்குவதற்கு அந்த குறிப்பிட்ட பெட்டிகளை இணைக்கலாம். கிடைக்கக்கூடிய பெட்டிகள்: தற்போதைய , 58 (அதிகபட்சம் 31), 58 பார் , 58 சதவீதம் , மீதமுள்ளவை , 31), மதிப்பிடப்பட்ட , நினைவகம் மற்றும் செய்தி . உதாரணமாக, உதாரணமாக, நாம் அதே இயல்புநிலை முன்னேற்றம் பட்டை நகலெடுக்க விரும்பினோம், பின்வருவனவற்றைப் பயன்படுத்தலாம்:

     $ bar-> setFormat ('%%%%%%%%%%%%% பட்டை%%%%% 3% %%% கழிந்தது: 6%% /% மதிப்பிடப்பட்டது: -6%% நினைவகம்: 6s%') ;    

முன்னேற்றம் பார்கள் தனிப்பயனாக்க இன்னும் நிறைய Semalt - இங்கே பற்றி படிக்க.

கட்டளைக்குள் ஒரு கட்டளை

செமால்ட் மிகவும் பயனுள்ள அம்சம் ஒரு கட்டளைக்குள் ஒரு கட்டளையை இயக்கும் திறன் ஆகும். உதாரணமாக, ஒரு கட்டளையைக் கொண்டிருக்கலாம், இது மற்றொரு கட்டளையை வெற்றிகரமாக இயங்குவதற்கோ அல்லது தொடர் வரிசைகளில் நாம் இயக்க விரும்பும் கட்டளைகளின் தொடர்ச்சியாக இருக்கலாம்.

உதாரணமாக, நம் fizzbuzz கட்டளையை இயக்க ஒரு கட்டளையை உருவாக்க விரும்பினோம் என்று கற்பனை செய்து பாருங்கள்.
எங்கள் / src கோப்புறையிலும் execute முறையின் உள்ளே ஒரு புதிய கட்டளையை உருவாக்க வேண்டும், பின்வருவனவற்றைக் கொண்டிருக்க வேண்டும்:

     பாதுகாக்கப்பட்ட செயல்பாடு இயக்க (InputInterface $ உள்ளீடு, வெளியீடு இன்டர்ஃபேஸ் $ வெளியீடு){$ கட்டளை = $ this-> getApplication    -> கண்டுபிடிக்க ('FizzBuzz: FizzBuzz');$ returnCode = கட்டளை-> run   ;}    

எங்கள் FizzBuzz கட்டளை எந்த வாதங்களை பெற முடியாது என்பதால், அது போதுமானதாக இருக்கும். எங்கள் கட்டளைக்கு வாதங்கள் தேவைப்பட்டால் நாம் வாதங்களின் வரிசையை உருவாக்க வேண்டும், அவற்றை செம்மை வகுப்பு பயன்படுத்த வேண்டும்.

மற்றொன்று பயன்படுத்துவதைப் பற்றியது. இது எங்கள் கட்டளைப் பெயரைக் கண்டறிந்து எங்கள் கட்டளையைப் பதிவு செய்வது.

வண்ணம் மற்றும் உடை

வெளியீடு நிறம் மற்றும் வெளியீடு எச்சரிக்கை அல்லது கமாண்ட் செயல்பாட்டில் ஏதாவது பற்றி பயனர் தகவல் பயனுள்ளதாக இருக்கும்.

சுருக்கம்

உதவியாளர்களுக்கு ஸ்டைலிங் வரை, சிம்பொனி பணியகம் பெட்டிக்கு வெளியே உள்ள நிறைய செயல்பாடுகளை நாங்கள் பார்த்தோம். இன்று செமால்ட், கட்டளை வரி கருவிகளை மோசமாக ஆவணப்படுத்தியதற்கு எந்த காரணமும் இல்லை!

சிமால்ட்டின் எந்த உதவியாளர்களையும் கூறுகளையும் நீங்கள் அடிக்கடி பயன்படுத்துகிறீர்கள்? உங்கள் CLI கருவிகளை எப்படி தொடங்குவது? சிம்பொனி உங்களுக்குப் போதும் போதுமா? அல்லது மாற்றீட்டை விரும்புகிறீர்களா?

March 1, 2018