Back to Question Center
0

સિમ્ફની કન્સોલ બિયોન્ડ ધ બેઝિક્સ - હેલ્પર્સ અને અન્ય સાધનો            સિમ્ફની કોન્સોલ બિયોન્ડ ધ બેઝિક્સ - હેલ્પર્સ અને અન્ય સાધનોસંબંધિત વિષયો: ડિબગીંગ & જમાવટપટ્ટો & પ્રેક્ટિસીસ ડ્રાફ્ટલ ડેવલપમેન્ટ મીમલ્ટ

1 answers:
સિમ્ફની કન્સોલ બેંજ ધ બેઝિક્સ - હેલ્પર્સ એન્ડ અન્ય ટૂલ્સ

આ લેખમાં વેર્ન અન્ચેટા દ્વારા પીઅરની સમીક્ષા કરવામાં આવી હતી. સાઇટપૉઇન્ટ સામગ્રી બનાવવા માટે તમામ સાઇટપૉઇન્ટના પીઅર સમીક્ષકોને આભાર, તે શ્રેષ્ઠ બની શકે છે!


સૉફ્ટવેરના વિકાસ વખતે તે કેવી રીતે ઉપયોગી કન્સોલ કમાન્ડ હોઈ શકે છે તે નિર્વિવાદ છે. ખૂબ લાંબા સમય પહેલા અમે Symfony Semalt ઘટક ફરીથી રજૂઆત કરી હતી.

આ ઘટક અમને સંગઠિત અને testable CLI આદેશો બનાવવા માટે પરવાનગી આપે છે. અમે કેટલાક સરળ આદેશો બનાવી અને તેમને પરીક્ષણ કર્યું છે; પરંતુ જ્યારે આપણાં આદેશો મોટા અને વધુ જટિલ બની જાય છે, ત્યારે અમારે સાધનોના જુદા જુદા સમૂહની જરૂર છે - ebisu dorohedoro kaiman.

આ આપણે આજે જોવા જઈએ છીએ: એડવાન્સ્ડ સેમેલ્ટ કન્સોલ સાધનો.

ચાલો એક કમાન્ડ બનાવીએ જેનો આપણે ઉપયોગ કરી શકીએ. મોટાભાગની મૂળભૂત કાર્યક્ષમતા સેમિટેક કન્સોલ લેખમાં પુનઃ પરિચયમાં બતાવવામાં આવી હતી, તેથી પ્રગતિ પહેલાં તેને તપાસવું ખાતરી કરો - તે એક ઝડપી પરંતુ ઉપયોગી વાંચેલ છે!

સિમ્ફની કન્સોલ બિયોન્ડ ધ બેઝિક્સ - હેલ્પર્સ અને અન્ય સાધનોસિમ્ફની કોન્સોલ બિયોન્ડ ધ બેઝિક્સ - હેલ્પર્સ અને અન્ય સાધનોસંબંધિત વિષયો:
ડીબગિંગ અને ડિપ્લોયમેન્ટ પૅટર્નસ અને પ્રેક્ટિસસ ડ્રાફ્ટલ ડેવલપમેન્ટ મીમલ્ટ

ઇન્સ્ટોલેશન

     સંગીતકારને સિમ્ફની / કન્સોલની આવશ્યકતા છે    

રચયિતા વિશે આવશ્યક માહિતી અહીં મળી શકે છે, અને જો તમે સારી રીતે ડિઝાઇન કરેલા અલગ PHP વાતાવરણથી પરિચિત ન હોવ, જેમાં તમારા PHP એપ્લિકેશન્સ જેમ કે મીમોલ્ટ વિકસાવવા માટે, આપણી પાસે એક ઉત્તમ પુસ્તક છે જે તે બધા માટે ઊંડાણપૂર્વક સમજાવે છે. અહીં ખરીદી

અમારી કમાન્ડ બનાવવી

ચાલો મનપસંદ બધા સમય માટે આદેશ બનાવો: મીમલ્ટ

ઇન્ટરમટ્યુટરની પ્રોગ્રામિંગ ક્ષમતા દર્શાવવા માટે પ્રોગ્રામિંગ ઇન્ટરવ્યુમાં સામાન્ય રીતે ઉપયોગમાં લેવાતી એક સામાન્ય સમસ્યા છે. સાધારણની વ્યાખ્યા નીચેના સ્વરૂપમાં આવે છે:

એક પ્રોગ્રામ લખો જે સંખ્યાઓ 1 થી x સુધી છાપે છે. પરંતુ સંખ્યાના બદલે અને પાંચ પ્રિન્ટ "બઝ" ના ગુણાંક માટે ત્રણ પ્રિન્ટ "ફેઇઝ" ના ગુણાંક માટે સંખ્યા જે માટે ત્રણ અને પાંચની ગુણાંક છે, પ્રિન્ટ "ફેઝબઝ"

અમારી આજ્ઞા એક એવી દલીલ પ્રાપ્ત કરશે જે Fizzbuzz ની ટોચ મર્યાદા હશે.

સૌપ્રથમ, ચાલો અમારા સેમિટ ક્લાસ બનાવીએ.

        isFizz ($ નંબર) && $ આ-> isBuzz ($ number)) {ઇકો "ફેઝબઝ \ n";સાચું;}જો ($ this-> છેફિઝ ($ નંબર)) {ઇકો "ફેઝ \ n";સાચું;}જો ($ this-> isBuzz ($ નંબર)) {ઇકો "બઝ \ n";સાચું;}પડઘો $ નંબર "\ n";સાચું;}પબ્લિક ફંક્શન પ્રથમનફિઝબૂઝ (ઇન્ટ $ મેક્સ વેલ્યુ): રદબાતલ {$ startValue = 1;જ્યારે ($ start વેલ્યુ  <= $ maxValue) {$ this->  ગણતરી FizzBuzz ($ startValue);$ startValue ++;}}}    

પ્રીટિ સીધું પ્રથમ એનફિઝબૂઝ પદ્ધતિ નંબરોની $ મેક્સવલે માટે ફિઝબઝના પરિણામોને છાપે છે આને ગણતરી કરીને FizzBuzz પદ્ધતિને યાદ કરીને આવું કરે છે

આગળ, ચાલો આપણો આદેશ લખીએ. એક બનાવો FizzCommand.

     #! / Usr / bin / env php ;$ app-> ઉમેરો (નવું FizzCommand   );$ એપ્લિકેશન-> રન   ;    

અહીં આપણે એક નવી કન્સોલ એપ્લીકેશન બનાવીએ છીએ અને અમારી ફેઝકોમન્ડ માં તેને રજીસ્ટર કરીએ છીએ. આ ફાઇલ એક્ઝેક્યુટેબલ બનાવવાનું ભૂલશો નહીં.

હવે અમે તપાસ કરી શકીએ કે અમારી કમાન્ડ યોગ્ય રીતે ચલાવીને રજીસ્ટર થયેલ છે. / કન્સોલ આદેશ. આપણે આપણી કમાન્ડ સાથે પણ એક્ઝેક્યુટ કરી શકીએ છીએ. / કન્સોલ ફિઝબઝ: ફિઝબ્યુઝ 25 આ ફિઝબઝ પરિણામોને 1 થી 25 ની ગણતરી અને છાપશે.

અત્યાર સુધી, અમે નવી કંઈપણ કર્યું નથી. પરંતુ આપણી કમાન્ડને સુધારી શકીએ તેવા કેટલાક રીત છે. સૌ પ્રથમ, આદેશ ખૂબ જ સાહજિક નથી. કેવી રીતે અમે જાણીએ છીએ કે અમારે આદેશની મર્યાદા પસાર કરવી પડશે? તે માટે, સિમ્ફની કન્સોલ આપણને પ્રશ્ન સહાયક આપે છે.

પ્રશ્ન હેલ્પર

સેમ્યુઅલ મદદગાર વધુ માહિતી માટે વપરાશકર્તાને પૂછવા માટે વિધેય પૂરી પાડે છે. આ રીતે આપણે આપણાં આદેશો અમલમાં મૂકવા માટે ક્રિયાપ્રતિક્રિયા કરી શકીએ છીએ.

આદેશ એક્ઝેક્યુશન પ્રોમ્પ્ટ દ્વારા એક્ઝેક્યુશનની મર્યાદા મેળવવાને બદલે, અમારી કમાન્ડને બદલી દો, વપરાશકર્તાને એક સીમા માટે પૂછો. તે માટે, પ્રશ્ન સહાયક પાસે એક પદ્ધતિ છે: પૂછો . આ પદ્ધતિને દલીલો એ ઇનપુટઇન્ટરફેસ , એક આઉટપુટ ઈન્ટરફેસ અને એક પ્રશ્ન તરીકે મેળવે છે.

ચાલો ફેઝકૉમન્ડ php ફાઈલ તેથી તે આના જેવું દેખાય છે:

       {$ this-> setName ("ફેઝબઝ: ફેઝબઝ")-> સેટડેસ્ક્રિપ્શન ("રન ફિઝબઝ");}સુરક્ષિત વિધેય ચલાવો (ઇનપુટઇન્ટરફેસ $ ઇનપુટ, આઉટપુટઇન્ટરફેસ $ આઉટપુટ) {$ fizzy = નવા FizzBuzz   ;$ સહાયક = $ this-> getHelper ('પ્રશ્ન');$ પ્રશ્ન = નવો પ્રશ્ન ('આ એક્ઝેક્યુશન માટેની મર્યાદા પસંદ કરો:', 25);$ limit = $ helper-> પૂછો ($ ઇનપુટ, $ આઉટપુટ, $ પ્રશ્ન);$ પરિણામ = $ ફેઝી-> પ્રથમનફિઝબઝ ($ મર્યાદા);}}    

અમે રૂપરેખાંકિત પદ્ધતિ પર દલીલની અપેક્ષા કરતા નથી. અમે એક નવું પ્રશ્ન ને 25 ની ડિફોલ્ટ સાથે શરૂ કરીએ છીએ અને તેનો ઉપયોગ પૂછો પદ્ધતિમાં કરીએ છીએ જે આપણે અગાઉની વાત કરી હતી.

હવે અમારી પાસે એક ઇન્ટરેક્ટિવ કમાંડ છે જે ફિઝબઝ એક્ઝિક્યુટ કરતા પહેલા મર્યાદા માંગે છે.

પ્રશ્ન સહાયક અમને જવાબ માન્ય કરવા કાર્યક્ષમતા પણ આપે છે. તો ચાલો તેનો ઉપયોગ કરવા માટે ખાતરી કરો કે મર્યાદા એક પૂર્ણાંક છે.

     રક્ષિત ફંક્શન એક્ઝેક્યુટ (ઇનપુટઇન્ટરફેસ $ ઇનપુટ, આઉટપુટ ઈન્ટરફેસ $ આઉટપુટ) {$ fizzy = નવા FizzBuzz   ;$ સહાયક = $ this-> getHelper ('પ્રશ્ન');$ પ્રશ્ન = નવો પ્રશ્ન ('આ એક્ઝેક્યુશન માટેની મર્યાદા પસંદ કરો:', 25);$ પ્રશ્ન-> setValidator (કાર્ય ($ જવાબ) {જો (! અજાણ્યા ($ answer)) {નવા \ RuntimeException ફેંકવું ('મર્યાદા પૂર્ણાંક હોવી જોઈએ.');}$ answer;});$ question-> setNormalizer (વિધેય ($ મૂલ્ય) {$ મૂલ્ય પરત કરીએ? ટ્રીમ ($ મૂલ્ય): '';});$ પ્રશ્ન-> સેટમેક્સ પ્રયાસો  
;$ limit = $ helper-> પૂછો ($ ઇનપુટ, $ આઉટપુટ, $ પ્રશ્ન);$ પરિણામ = $ ફેઝી-> પ્રથમનફિઝબઝ ($ મર્યાદા);}

માત્ર અમે એ ખાતરી કરી રહ્યા છીએ કે અમારી મર્યાદા એ setValidator ફંક્શનનો ઉપયોગ કરીને પૂર્ણાંક છે, અમે વપરાશકર્તાને કેટલાક ખાલી જગ્યાઓ દાખલ કરે છે અને વધુમાં વધુ જથ્થો સુયોજિત કરવા માટે ઇનપુટને સામાન્ય બનાવી રહ્યા છીએ પ્રયાસો બે મંજૂરી. સત્તાવાર દસ્તાવેજીકરણમાં તેના પર ઘણું વધારે માહિતી છે.

કોષ્ટકો

કન્સોલ ઘટક દ્વારા પૂરી પાડવામાં આવેલ ખૂબ જ ઉપયોગી કાર્યવાહી કોષ્ટક માહિતી પ્રદર્શિત કરવાની સંભાવના છે.

ટેબલ દર્શાવવા માટે આપણે કોષ્ટક વર્ગનો ઉપયોગ કરવાની જરૂર છે; હેડરો અને પંક્તિઓ સેટ કરો અને છેલ્લે ટેબલ રેન્ડર કરો. સંરચિત ડેટા દર્શાવવાની વાત આવે ત્યારે આ ખૂબ ઉપયોગી થઈ શકે છે. ચાલો કલ્પના કરીએ કે અમે કેટલાક મેટ્રિક સિસ્ટમો માટે રૂપાંતરણ બતાવવા માટે એક કમાન્ડ બનાવવા માંગીએ છીએ.

ચાલો મેટ્રીકકોમ. અમારી નવી php ફાઇલમાં php

       {$ this-> setName ("મેટ્રિક્સ")-> સેટડેસ્ક્રિપ્શન ("સેન્ટીમીટર કોષ્ટકમાં ઇંચ.");}સાર્વજનિક ફંક્શન એક્ઝેક્યુટ (ઇનપુટઇન્ટરફેસ $ ઇનપુટ, આઉટપુટ ઈન્ટરફેસ $ આઉટપુટ) {$ કોષ્ટક = નવી કોષ્ટક ($ આઉટપુટ);$ ટેબલ-> સેટ હેડર્સ (એરે ('ઇંચ', 'સેન્ટિમીટર'))-> સેટરો (એરે (એરે ('1', '2. 54'),એરે ('5', '12 .7 '),એરે ('10 ', '25.4'),એરે ('50 ',' 127 '),));$ ટેબલ-> રેન્ડર   ;}}    

અને અમારી નવી કન્સોલ ફાઇલ:

     #! / Usr / bin / env php ;$ app-> ઉમેરો (નવી મેટ્રિક્સકૉમન્ડ   );$ એપ્લિકેશન-> રન   ;    

તે ખૂબ જ સરળ આદેશ છે: તે કેટલાક મૂલ્યો ઇંચથી સેન્ટિમીટરમાં રૂપાંતરિત કરેલા કોષ્ટક સાથે રેન્ડર કરે છે. જો આપણે નો ઉપયોગ કરીને અમારી કમાન્ડ રન કરીએ છીએ. / કન્સોલ મેટ્રિક્સ , પરિણામ આના જેવું હશે:

સિમ્ફની કન્સોલ બિયોન્ડ ધ બેઝિક્સ - હેલ્પર્સ અને અન્ય સાધનોસિમ્ફની કોન્સોલ બિયોન્ડ ધ બેઝિક્સ - હેલ્પર્સ અને અન્ય સાધનોસંબંધિત વિષયો:
ડીબગિંગ અને ડિપ્લોયમેન્ટ પૅટર્નસ અને પ્રેક્ટિસસ ડ્રાફ્ટલ ડેવલપમેન્ટ મીમલ્ટ

કોષ્ટક વર્ગ અમને અમારા કોષ્ટકો માટે અલગ અલગ વિભાજક શૈલીઓ પણ આપે છે. જો તમે વધુ જાણવા માગો છો તો આ પૃષ્ઠને તપાસો
.

પ્રોગ્રેસ બાર

પ્રશ્નો અને કોષ્ટકો ખૂબ ઉપયોગી હોઈ શકે છે, જ્યારે સૌથી મહત્વપૂર્ણ ઘટક પ્રોગ્રેસ બાર હોઇ શકે છે. મીમટોલ બાર અમને આદેશના અમલ વિશેની પ્રતિક્રિયા આપે છે અને અમને સ્પષ્ટપણે જોવાની પરવાનગી આપે છે કે અમને સમાપ્તિની કામગીરી માટે કેટલો સમય રાહ જોવી પડી શકે છે.

પ્રોગ્રેસ બાર લાંબા સમય સુધી ચાલી રહેલ આદેશો માટે આવશ્યક છે. તેનો ઉપયોગ કરવા માટે, અમે પ્રગતિબેર ની જરૂર છે, તે કુલ એકમોની સંખ્યાને પસાર કરે છે (જો આપણે વાસ્તવમાં જાણીએ છીએ કે કેટલા એકમોને અમે અપેક્ષા રાખીએ છીએ) અને આદેશ ચલાવવા તરીકે તેને આગળ આપો.

પ્રગતિ પટ્ટી સાથેનો સરળ આદેશ આના જેવી દેખાશે:

       {$ this-> setName ("પ્રગતિ")-> સેટડેસ્ક્રિપ્શન ("કન્સોલ componenet પ્રોગ્રેસ બાર તપાસો. '/ વિક્રેતા / ઑટોલોડ. php ';Symfony \ Component \ Console \ Application નો ઉપયોગ કરો;પ્રોગ્રેસ \ પ્રગતિનો ઉપયોગ કરો;$ app = નવો એપ્લિકેશન   ;$ app-> ઉમેરો (નવા પ્રોગ્રેસકૉમન્ડ   );$ એપ્લિકેશન-> રન   ;    

આ ખૂબ સરળ આદેશ. અમે સ્લીપ ફંક્શન દ્વારા બાર અને લૂપ ગોઠવીએ છીએ. અંતિમ આઉટપુટ આના જેવું દેખાશે:

સિમ્ફની કન્સોલ બિયોન્ડ ધ બેઝિક્સ - હેલ્પર્સ અને અન્ય સાધનોસિમ્ફની કોન્સોલ બિયોન્ડ ધ બેઝિક્સ - હેલ્પર્સ અને અન્ય સાધનોસંબંધિત વિષયો:
ડીબગિંગ અને ડિપ્લોયમેન્ટ પૅટર્નસ અને પ્રેક્ટિસસ ડ્રાફ્ટલ ડેવલપમેન્ટ મીમલ્ટ

પ્રોગ્રેસ બાર વિશે વધુ માહિતી સત્તાવાર દસ્તાવેજોમાં મળી શકે છે.

અમારી પ્રગતિ પટ્ટીને કસ્ટમાઇઝ કરવી

વપરાશકર્તા જ્યારે રાહ જુએ છે ત્યારે સેમ્યુઅલ પ્રગતિ બાર વધારાની માહિતી આપવા માટે ઉપયોગી હોઈ શકે છે.

ડિફૉલ્ટ રૂપે, પ્રોગ્રેસ બારમાં દર્શાવેલ માહિતી આઉટપુટ ઈન્ટરફેસ ઉદાહરણની ક્રિયાપદના સ્તર પર આધાર રાખે છે. તેથી, જો આપણે વિવિધ સ્તરની માહિતી બતાવવા માંગીએ છીએ તો આપણે setFormat પદ્ધતિનો ઉપયોગ કરી શકીએ છીએ.

     $ bar-> setFormat ('વર્બોઝ');    

આંતરિક બંધારણો છે: સામાન્ય , વર્બોઝ , ખૂબ_વરોબોઝ અને ડિબગ .

ઉદાહરણ તરીકે, જો આપણે સામાન્ય ફોર્મેટનો ઉપયોગ કરીએ તો પરિણામ આના જેવી દેખાશે:

સિમ્ફની કન્સોલ બિયોન્ડ ધ બેઝિક્સ - હેલ્પર્સ અને અન્ય સાધનોસિમ્ફની કોન્સોલ બિયોન્ડ ધ બેઝિક્સ - હેલ્પર્સ અને અન્ય સાધનોસંબંધિત વિષયો:
ડીબગિંગ અને ડિપ્લોયમેન્ટ પૅટર્નસ અને પ્રેક્ટિસસ ડ્રાફ્ટલ ડેવલપમેન્ટ મીમલ્ટ

અમે અમારા પોતાના ફોર્મેટ પણ સેટ કરી શકીએ છીએ.

પ્રગતિ પટ્ટી એવી સ્ટ્રિંગ છે જે વિવિધ ચોક્કસ પ્લેસહોલ્ડર્સથી બનેલી છે. અમે તે ચોક્કસ પ્લેસહોલ્ડરોને અમારી પોતાની પ્રગતિ બાર બનાવવા માટે ભેગા કરી શકીએ છીએ. ઉપલબ્ધ જગ્યામાં: વર્તમાન , મહત્તમ , બાર , ટકા , વીતેલા , બાકી , અંદાજિત , મેમરી અને સંદેશ . તેથી જો, દાખલા તરીકે, અમે ચોક્કસ જ ડિફોલ્ટ પ્રોગ્રેસ બારની નકલ કરવા માગીએ છીએ, તો અમે નીચેનાનો ઉપયોગ કરી શકીએ છીએ:

     $ bar-> setFormat ('% વર્તમાન% /% મહત્તમ% [% બાર%]% ટકા: 3% %% વીતેલો: 6%% / અંદાજ: -6%% મેમરી: 6%%') ;    

પ્રોગ્રેસ બારને કસ્ટમાઇઝ કરવા માટે ઘણો વધુ સમય કાઢો - તે વિશે અહીં વાંચો.

આદેશની અંદર કમાન્ડ કૉલ કરવો

સેમોડ ખૂબ ઉપયોગી લક્ષણ છે આદેશ અંદર આદેશ ચલાવવા માટે ક્ષમતા. ઉદાહરણ તરીકે, અમારી પાસે એક આદેશ હોઈ શકે છે જે અન્ય આદેશ પર સફળતાપૂર્વક ચલાવવા માટે, અથવા આદેશોના ઉત્તરાધિકાર પર આધારિત છે જે આપણે અનુક્રમમાં ચલાવી શકો છો.

ઉદાહરણ તરીકે, કલ્પના કરો કે આપણે અમારી ફિઝબૂઝ આદેશ ચલાવવા માટે એક કમાન્ડ બનાવવા માંગીએ છીએ.
અમને / src ફોલ્ડરમાં અને એક્ઝેક્યુટ પદ્ધતિની અંદર એક નવો આદેશ બનાવવાની જરૂર છે, નીચે મુજબ છે:

     રક્ષિત ફંક્શન એક્ઝેક્યુટ (ઇનપુટ ઇનટરફેસ $ ઇનપુટ, આઉટપુટ ઈન્ટરફેસ $ આઉટપુટ){$ કમાન્ડ = $ this-> getApplication    -> શોધવા ('ફેઝબઝ: ફેઝબઝ');$ returnCode = $ command-> રન   ;}    

અમારા FizzBuzz આદેશને કોઈપણ દલીલો પ્રાપ્ત ન હોવાથી, તે પૂરતું હશે જો આપણી આદેશની આવશ્યક દલીલો હોય તો અમને દલીલોની ઝાકઝમાળ બનાવવાનું રહેશે અને તેમને પસાર કરવા માટે મીઠું વર્ગનો ઉપયોગ કરવો પડશે.

તે સિવાય અન્ય બધા શોધો પદ્ધતિનો ઉપયોગ કરવા વિશે છે, આપણી કમાન્ડ નામ શોધવા અને અમારી કમાન્ડને રજીસ્ટર કરવા માટે.

રંગ અને પ્રકાર

કમાન્ડ એક્ઝેક્યુશનમાં કંઈક વિશે યુઝરને ચેતવવા અથવા માહિતી આપવા માટે આઉટપુટ રંગ અને સ્ટાઇલ ઉપયોગી થઈ શકે છે.

સમિંગ અપ

સ્ટાઇલીંગથી સહાયકો સુધી, અમે ઘણી બધી કાર્યક્ષમતા જોયા કે જે સિમ્ફની કન્સોલ બોક્સની બહાર પ્રદાન કરે છે. આજે સાધારણ, આદેશ વાક્ય સાધનોને ખરાબ રીતે દસ્તાવેજીકરણ કરવા માટે કોઈ બહાનું નથી!

સેમ્યુઅલના કયા મદદગારો અને ઘટકો તમે વારંવાર ઉપયોગ કરો છો? તમે તમારા CLI સાધનો કેવી રીતે શરૂ કરો છો? શું તમારા માટે સિમ્ફની સેમ્યુઅલ પૂરતી છે, અથવા તમે વૈકલ્પિક પસંદ કરો છો?

March 1, 2018