Tarkib
Qaysi ramkadan foydalanishimni so'rang, ehtimol men g'amgin kampirga duch kelaman va sizga barcha ramkalar bir-birlariga o'xshab yomonligini aytaman. Bu ularning hammasi yomon, demoqchi emasmiz, lekin PHP-da biz tasavvurga ega bo'lmagan juda ko'p sonli ramkalarga egamiz (odatda N + 1 deb nomlanadi, bu erda N - bu PHP dunyodagi ishlab chiquvchilar soni) va ularning barchasi ehtimol mantiqan ularni ixtiro qilgan kishiga.
Ramkalarni tanlash imkoniyatiga ega bo'lish, aynan nimani yaratmoqchi bo'lganligingizdan qat'iy nazar, faqat bitta ramkadan foydalanishga urinishdan ko'ra yaxshiroqdir, chunki bu "eng yaxshi" (har qanday "eng yaxshi" o'lchov bilan). Ushbu ramka takliflari sizning loyihaning ehtiyojlariga javob beradigan narsani tanlashingiz mumkinligini anglatadi va u hatto hujjatlashtirilgan bo'lishi mumkin. Har qanday platformadagi ramkalar, albatta, tuzilma, qayta ishlatilishi mumkin bo'lgan modullar va kutubxonalar bilan ta'minlanadi va odatda bir xil funktsiyalarni qayta-qayta yaratish bilan bog'liq barcha zerikarli va takrorlanadigan vazifalardan qochadi. Masalan, CMS-lar qurishda, men uchun biror narsa ishlov berish va tasdiqlash kerak; agar o'z holimda qoldirsam, men muhim bir narsani sog'inib qolishim mumkin va men har bir loyihaning elementlarini bajarishni afzal bilaman boshqacha, har safar bir xil bo'lganlardan ko'ra!
To'liq to'plamli ramkalar
To'liq to'plamli ramkalar, masalan Zend Framework, juda ko'p me'moriy tajribasiz ishlab chiquvchi uchun yaxshi joy bo'lishi mumkin. Bu yangi dasturni osib qo'yish uchun yaxshi tuzilma beradi va uning atrofida yaxshi "ekotizim" mavjud - juda ko'p kitoblar, o'quv qo'llanmalari va ba'zi bir oqilona hujjatlar. Agar siz ko'plab odamlar tomonidan qo'llab-quvvatlanadigan katta dastur yaratmoqchi bo'lsangiz, unda taniqli va keng qamrovli tuzilma yaxshi tanlov bo'lishi mumkin, chunki u juda ko'p tuzilishni belgilaydi va taniqli va tushunarli bo'ladi.
Ajratishga yordam beradigan tuzilishga ega bo'lish har doim yaxshi; kariyeramning boshida men ba'zilar bilan ishladim juda kichik ishlab chiquvchilar va ularga o'sha paytda nisbatan yangi bo'lgan MVC (Model View Controller) naqshini o'rgatishga harakat qilishdi. Smarty-ni ko'rish qatlamida ishlatish to'g'risida qaror qabul qildik; qisman dizaynerlar shablonlar bilan osonroq ishlashi uchun va qisman mening stolimga kimdir kelib: "Smarty bilan X ni qanday qilaman?" "X ko'rinishda qilmang!" Deb ayta olaman. (10 dan to'qqiz marta, bu javob edi). Ramkalarga ega bo'lish, dasturimizning boshqa qismlarida ham xuddi shunday ajratishni topishga yordam beradi. Ularning aksariyati "Smarty" yoki mening yangi sevganim "Twig" kabi jozibali qatlamga qarshi integratsiyani qo'llab-quvvatlaydi, shuning uchun qaysi vositani tanlasangiz, o'sha vositalarni olib yurishingiz mumkin.
Yukni engillashtiring
Zend Framework-dan ko'ra engilroq ramkalar juda ko'p, masalan, men CodeIgniter bilan biroz ishlayman. Bu Zend Framework kabi keng qamrovli va mustahkammi? Yo'q, unday emas. Ilovani tezda yaratishga imkon beradigan yordamchi ramka sifatida bu juda foydali. Umuman olganda, kamroq "yordamchi" funktsiyaga ega ramkalar sizning yo'lingizni topishda osonroq bo'lishi mumkin, chunki qismlar qanday birlashishi ancha ravshanroq. Noma'lum doirada (men uchun bu deyarli hamma narsa), bu ishlashni va disk raskadrovka qilishni qiyinlashtiradigan avtomagik bitlar.
Ushbu "yangi doirada yo'qolib qolish" hissi muqarrar va umuman umidsizlikka uchraydi; hatto tajribali ishlab chiquvchi ham biron bir narsaning qanday ishlashini bilmaganida o'zini yangi boshlovchi kabi his qiladi. Agar chindan ham omadingiz kelmasa, siz IRC kanali sizga ahmoq ekanligingizni aytadigan ramkani tanlagan bo'lasiz! Aynan mana shu juda salbiy dastlabki tajriba ko'plab odamlarni yangi ramkadan foydalanishni yoki uni birinchi navbatda qabul qilishni to'xtatib qo'yadi va juda ozgina ramkalar ushbu to'siqdan yangi foydalanuvchilarga yordam berishda yaxshi ishlaydi.
PHP-da bizda ba'zi bir ramkalar mavjud bo'lib, ular aslida men so'zni ishlatadigan asos emas. Bizda juda yoqimli tarkibiy qismlar mavjud; o'z xohishiga ko'ra ishlatilishi va birgalikda o'ynashga mo'ljallangan Zeta Componentlar (ilgari eZ Componentlari) va Symfony Componentlari kabi kutubxonalar to'plamlari (ularning saytini ko'rganmisiz? Ular eng yaxshi san'at asarlari mukofotiga sazovor bo'lishdi!). Bulardan eng yaxshisi va eng muhimi, albatta, PHP-ning o'zining PEAR va PECL takliflari - bu jasur yangi dunyo dunyosida qandaydir tarzda unutilib ketadi.
Mikroframeworks
Mikroframeworks - bu PHPda paydo bo'layotgan tendentsiya; bu juda oson takliflar, bu shunchaki narsalarni tezroq yopishtirishga yordam beradi. Yaxshi misol - bu juda tez va sodda foydalaniladigan va RESTful tushunchalarini tushunadigan Slim. U URL naqshlari bo'lgan "marshrutlar" g'oyasi atrofida asoslangan. Siz marshrutni ro'yxatdan o'tkazasiz va ushbu URL so'ralganda qayta chaqiriladigan qo'ng'iroqni qaytarasiz.
Ko'pgina PHP ishlab chiquvchilari ramkalarni qabul qilishadi va ular bilan ishlashadi, yoki ular ish joylarida, boshqalari esa o'zlarining sevimli mashg'ulotlari yoki ochiq kodli loyihalari uchun foydalanishlari mumkin. "Eng yaxshi" ramka haqida ozgina kelishuv mavjud, shuning uchun hamma o'z bilgan narsalariga sodiq qoladi va natijada juda ko'p sonli ramkalarning parallel rivojlanishi bo'ladi! Tanlashim kerak bo'lgan tanlovni yaxshi ko'raman, lekin ularning hammasi bir-birlariga o'xshab yomonligini aytib o'tdimmi?
Agar siz Zend Frameworkni bilsangiz, u holda siz o'zingizni Zend Framework ishlab chiqaruvchisi sifatida tasvirlaysiz; u bilan ishlash imkoniyatiga ega bo'lmaguningizcha, boshqa doirada yozish sizga qulay bo'lmaydi va ehtimol siz PHP funktsiyalarining ko'pini eslay olmaysiz, agar siz ularni tez-tez ishlatmasangiz. Biz ramkaga xos ishlab chiquvchilarga aylandik, faqat abstraktsiya qatlamlari ustida ishlaymiz, degan fikr PHP uchun biroz g'alati. Axir bu "veb-muammoni hal qilish uchun" til. Bu C tilida yozilgan va o'zi uchun tezkor, engil til ... katta ramka yuklash jarayoni bajarilishini kutmasligingizni ta'minlaydi! Shu nuqtai nazardan biz Funkatron deb atagan odam yozgan MicroPHP Manifesti paydo bo'ldi (garchi uning ismi haqiqatan Ed Finkler bo'lsa ham). Bu bir-biriga mos keladigan bir nechta kichik modullarni yaratish yaxshi, bundan kattaroqi yaxshi emas va haqiqatan ham Java uchun hayot juda qisqa - hatto PHP-da yozilgan bo'lsa ham, bu bir qator bayonotlar.