Բովանդակություն
Հարցրեք ինձ, թե որ շրջանակն օգտագործեմ, և ես, հավանաբար, կունենամ փնթփնթան պառավ կնոջ պահ և կասեմ, որ բոլոր շրջանակներն իրար չափ վատն են: Դա չի նշանակում, որ դրանք բոլորը վատն են, ճիշտ է, բայց PHP- ում մենք ունենք աներևակայելի մեծ թվով շրջանակներ (սովորաբար նշվում է որպես N + 1, որտեղ N- ը աշխարհում PHP մշակողների քանակն է), և հավանաբար բոլորն էլ իմաստ ունեին նրանց հորինած մարդուն:
Շրջանակների ընտրություն ունենալը, հավանաբար, ավելի լավ է, քան փորձել օգտագործել միայն մեկ շրջանակ ՝ անկախ այն բանից, թե կոնկրետ ինչ եք փորձում կառուցել, քանի որ այն «լավագույնն» է («լավագույնի» ցանկացած չափով): Շրջանակային առաջարկների այս ընտրությունը նշանակում է, որ դուք կարող եք ընտրել ինչ-որ բան, որը համապատասխանում է ծրագրի կարիքներին, և այն կարող է նույնիսկ փաստաթղթավորվել: Platformանկացած պլատֆորմի շրջանակներ իսկապես այնտեղ են ՝ կառուցվածք, բազմակի օգտագործման մոդուլներ և գրադարաններ ապահովելու համար, և, ընդհանուր առմամբ, խուսափում են բոլոր ձանձրալի և կրկնվող առաջադրանքներից, որոնք կապված են նույն գործառույթը բազմիցս կառուցելու հետ: Օրինակ, CMS- ները կառուցելիս ինչ-որ բան պետք է մշակի և վավերացնի ձևի դաշտերը: եթե թողնեմ իմ ուժերին, ես կարող եմ կարևոր ինչ-որ բան բաց թողնել, և ես նախընտրում եմ անել յուրաքանչյուր նախագծի այն տարրերը, որոնք կան տարբեր, այլ ոչ թե նրանք, որոնք ամեն անգամ նույնն են:
Full-stack շրջանակներ
Full-stack շրջանակները, ինչպիսին է Zend Framework- ը, կարող է լինել լավ տեղ սկիզբը մշակողի համար ՝ առանց ճարտարապետության մեծ փորձի: Այն լավ կառուցվածք է տալիս նոր հավելվածը կախելու համար, և դրա շուրջ կա լավ «էկոհամակարգ» ՝ շատ գրքեր, ձեռնարկներ և որոշ ողջամիտ փաստաթղթեր: Եթե փորձում եք ստեղծել մեծ ծրագիր, որը կպահպանվի շատ մարդկանց կողմից, ապա հանրաճանաչ, համապարփակ շրջանակը, հավանաբար, լավ ընտրություն կլինի, քանի որ այն կթելադրի բավականին մեծ կառուցվածք և լավ հայտնի և հասկանալի կլինի:
Ունենալով կառուցվածք, որը կօգնի բաժանմանը, միշտ լավ է. Իմ կարիերայի սկզբում ես աշխատել եմ ոմանց հետ շատ կրտսեր ծրագրավորողներ և փորձել նրանց սովորեցնել MVC (Model View Controller) օրինակը, որն այդ ժամանակ համեմատաբար նոր էր: Մենք որոշում կայացրեցինք Smarty- ն օգտագործել դիտման շերտում: մասամբ, որպեսզի դիզայներները կարողանան ավելի հեշտ աշխատել կաղապարների հետ, և մասամբ, որպեսզի երբ ինչ-որ մեկը գա իմ սեղանի մոտ և ասի ՝ «ինչպե՞ս X- ն անել Smarty- ի հետ»: Կարող եմ ասել ՝ «մի արա X- ը տեսանկյունից»: (10-ից ինը անգամ դա էր պատասխանը): Շրջանակներ ունենալը օգնում է մեզ գտնել նույն տարանջատումը մեր կիրառման այլ մասերում: Նրանցից շատերն աջակցում են ինտեգրվել այնպիսի գայթակղիչ շերտի, ինչպիսին է Smarty- ն կամ իմ նոր նախընտրածը `Twig- ը, այնպես որ այդ գործիքները կարող եք վերցնել ձեզ հետ` ընտրելով որ շրջանակը:
Թեթևացրեք բեռը
Կան շատ ավելի հեշտ շրջանակներ, քան Zend Framework- ը, օրինակ, ես CodeIgniter- ի հետ բավականին շատ եմ աշխատում: Արդյո՞ք դա նույնքան ընդգրկուն և առողջ է, որքան Zend Framework- ը: Ոչ, դա այդպես չէ: Բայց որպես օգնական շրջանակ, որը հնարավորություն է տալիս արագորեն կառուցել հավելված, այն օգտակար է: Ընդհանուր առմամբ, ավելի քիչ «օգնականի» գործառույթներ կարող են ավելի հեշտ գտնել ձեր շրջապատում, քանի որ շատ ավելի ակնհայտ է, թե ինչպես են կտորները միասին գնում: Անծանոթ շրջանակներում (ինձ համար դա գրեթե ամեն ինչ է), ավտոմատիկ բիթերն են, որոնք դժվարացնում են աշխատելն ու կարգաբերումը:
«Նոր շրջանակներում կորած լինելու» այդ զգացողությունն անխուսափելի է և լիովին հուսախաբ: նույնիսկ փորձառու մշակողն իրեն նորեկ է զգում, երբ չգիտի, թե ինչպես է ինչ-որ բան գործում: Եթե իսկապես անհաջողակ եք, կընտրեք մի շրջանակ, որի IRC ալիքը ձեզ կասի, որ դուք նույնպես ապուշ եք: Դա հենց այս շատ բացասական նախնական փորձն է, որը շատ մարդկանց ստիպում է հրաժարվել նոր շրջանակի օգտագործումից կամ առաջին հերթին դրա ընդունումից, և շատ քիչ շրջանակներ լավ աշխատանք են կատարում ՝ օգնելով նոր օգտվողներին այդ նախնական խոչընդոտից:
PHP- ում մենք ունենք նաև մի քանի շրջանակներ, որոնք իրականում շրջանակներ չեն այնպես, ինչպես ես սովորաբար օգտագործում եմ բառը: Մենք ունենք որոշ գեղեցիկ բաղադրիչների շրջանակներ. գրադարանների հավաքածուներ, որոնք նախատեսված են ըստ ցանկության և գեղեցիկ միասին խաղալու համար, ինչպիսիք են Zeta Components (նախկինում eZ Components) և Symfony Components (տեսե՞լ եք նրանց կայքը: Նրանք շահում են մրցանակ լավագույն արվեստի գործերի համար): Դրանցից լավագույնն ու ամենալավ հնչյունը, իհարկե, PHP- ի սեփական տանձի և PECL առաջարկներն են. Ինչ-որ կերպ դրանք մոռացվում են այս համարձակ շրջանակների նոր աշխարհում:
Միկրոհամակարգեր
Միկրոհամակարգերը PHP- ի զարգացող միտում են. սրանք գերթեթև առաջարկներ են, որոնք պարզապես օգնում են ավելի արագ սոսնձել իրերը: Լավ օրինակ է Slim- ը, որը շատ արագ և պարզ է օգտագործման մեջ, և հասկանում է ՀԱՆԳՍՏԻ հասկացությունները: Այն հիմնված է «երթուղիներ» գաղափարի շուրջ, որոնք URL նմուշներ են: Դուք գրանցում եք երթուղի և հետադարձ կապ եք տալիս, որը պետք է վկայակոչվի, երբ այդ URL- ն խնդրվի:
PHP- ի մշակողների մեծամասնությունն ընդունում է մի շրջանակ և հավատարիմ է դրան, կամ նրանք կարող են մեկը օգտագործել աշխատավայրում, իսկ մյուսը ՝ իրենց հոբբիի կամ բաց աղբյուրի նախագծերի համար: Քիչ համաձայնություն կա «լավագույն» շրջանակի օգտագործման համար, որպեսզի բոլորը պարզապես հավատարիմ մնան իրենց գիտելիքներին, և արդյունքը զանգվածային շրջանակների զուգահեռ զարգացումն է: Ես սիրում եմ ընտրություն կատարել ընտրելու համար, բայց նշեցի՞, որ նրանք բոլորը նույնքան վատն են, որքան մեկը մյուսը:
Եթե գիտեք Zend Framework, ապա վերջում նկարագրվում եք որպես Zend Framework մշակող; ձեզ հարմար չէր լինի գրել մեկ այլ շրջանակներում, քանի դեռ հնարավորություն չէիք ստացել դրան գլուխ հանել, և, հավանաբար, չեք հիշում հում PHP գործառույթներից շատերի համար, եթե դրանք հաճախ չեք օգտագործում: Այս գաղափարը, որ մենք դարձել ենք շրջանակի հատուկ մշակողներ, աշխատում ենք միայն վերացականության շերտերի վերևում, մի փոքր տարօրինակ է PHP- ի համար: Ի վերջո, սա լեզու է «վեբ խնդիրը լուծելու համար»: Այն գրված է C- ով և ինքնին արագ, թեթև լեզու է ... պայմանով, որ չես սպասում, որ կմեկնարկի մեծ շրջանակ bootstrap գործընթաց: Այս համատեքստից դուրս եկավ MicroPHP մանիֆեստը, որը գրվել է մի մարդու կողմից, որին մենք անվանում ենք Funkatron (չնայած նրա անունն իրոք Էդ Ֆինքլեր է): Դա հայտարարությունների շարք է, որտեղ ասվում է, որ կարգին է մի շարք փոխգործակցելի փոքր մոդուլներ կառուցել, որ ավելի մեծն ավելի լավը չէ, և որ, իրոք, Java- ի համար կյանքը շատ կարճ է ՝ նույնիսկ եթե այն գրված է PHP- ով: