Symfony 4: Eng yaxshi amaliyotlar

Loyihaning har qanday asosiy versiyasi - bu eng yaxshi tajribalarni qayta ko'rib chiqish uchun imkoniyatdir. Ularni modernizatsiya qilish. Ularni loyihaning yangi xususiyatlariga moslashtirish. Symfony 4 bundan mustasno emas.

Avval standartlashtirish

Symfony 4 standart vositalarni qo'llashga harakat qilib, amaldagi amaliyotning rivojlanishi bo'ladi.

Symfony PHP va veb-standartlarni qabul qilishga intiladi. Symfony 2 kompozitor mavjud bo'lmagan paytda boshlanganiga ishonish qiyin. O'shandan beri PHP hamjamiyati bir nechta tavsiyalarni qabul qilgan Fig guruhini tashkil qildi. Symfony, PSR-larning ko'pchiligini qabul qilgan birinchi asosiy tuzilmalardan biri bo'lib, orqaga qarab muvofiqlikni buzmadi. Ko'p yillar oldin kirish uchun PSR-3. Avtomatik yuklash uchun PSR-4. Yaqinda keshlash uchun PSR-6. Symfony-ning keyingi versiyasi (3.3-versiya) PSR-16-ni keshlash uchun ishlatadi va konteynerlarning o'zaro ishlashi uchun yangi PSR-11 ni qo'llaydi. Bizda PSR-13 uchun foydalanish holati ham bo'lishi mumkin.

Standartlardan foydalanish bir-biriga moslashishga yordam beradi, shuningdek kodni ramkadan ajratishda.

To'plamsiz dasturlar

To'plamsiz dasturlarga o'tish avvalgi blog postlarida tushuntirilgan. Men bu erda yana bir bor eslatib o'taman, chunki bu eng yaxshi amaliyotlar to'plamidagi muhim o'zgarishdir.

Atrof muhit o'zgaruvchilari

Symfony-ning eng yaxshi amaliyotlar kitobi Symfony dasturida konfiguratsiya sozlamalarini qanday yaratishni batafsil tushuntirib beradi. Infratuzilma bilan bog'liq konfiguratsiya uchun app / config / parametr.yml yoki dastur bilan bog'liq konfiguratsiya uchun app / config / config.yml dan qachon foydalanish kerak.

App / config / config.yml-dan iloji boricha ko'proq foydalanishni oldini olishni tavsiya qilaman. Amaliy foydalanish holatlari mavjud, ammo men ularni bir tomondan sanashim mumkin.

Symfony 4 app / config / parametrlar.yml-ga teng bo'lmaydi. Buning o'rniga atrof-muhit o'zgaruvchilaridan foydalaning. Ko'pgina ramkalar boshqa tillarda ham shunday qilinadi. Bu, shuningdek, 12-Faktor Ilovalar Manifestining tavsiyalaridan biridir. Ko'pchilik zamonaviy xosting platformalari tomonidan qo'llab-quvvatlanadiganlardan biri.

Atrof-muhit o'zgaruvchilaridan foydalanish, mukammal bo'lishdan tashqari, hozirgi paytda qilayotgan ishimizdan juda ko'p foyda oladi. Atrof-muhit o'zgaruvchilari atrof-muhitga bog'liq bo'lgan sozlashlarni boshqarishda ko'proq "standart" usuldir (masalan, parametr.yml.dist-ni boshqarish shart emas). Atrof muhit o'zgaruvchilari bir nechta dastur tomonidan o'qilishi mumkin, chunki ular sizning kodingiz, doirangiz va tilingizga bog'liq emas. Atrof muhit o'zgaruvchilari faqat o'qish uchun fayl tizimlarini tarqatishda yordam beradi, chunki ular sizning kodingizdan ajratiladi. Atrof muhitning o'zgaruvchan qiymatlari dasturingizni qayta joylashtirmasdan ("dinamik") o'zgarishi mumkin (Symfony-ning keshini tozalash). Nihoyat, ammo ahamiyatsizki, atrof-muhit o'zgaruvchilarini mavjud vositalar boshqarishi mumkin.

Sirlarni atrof-muhit o'zgaruvchisida saqlash ularni konfiguratsiya faylida saqlashdan ko'ra ko'proq "xavfsiz" emasligini unutmang.

Atrof-muhit o'zgaruvchisidan foydalanish rivojlanishda qiyin bo'lishi mumkin, chunki "standart" .env faylidan foydalanish oson va tavsiya etiladi. Symfony 3.3 yangi Dotenv komponenti bilan ta'minlangan bo'lib, u Symfony 4 dasturlarida sukut bo'yicha ishlatiladi. .Env fayli va "haqiqiy" muhit parametrlari o'rtasida almashish avtomatik va oshkora amalga oshiriladi.

E'tibor bering, agar siz o'zingizga yaxshi bo'lsa, parametrlar.yaml faylida atrof-muhit o'zgaruvchilarini aniqlab olishingiz mumkin. Ammo bu tavsiya etilmaydi. E'tibor bering, parametrlar.yaml parametrlar parametri emas.yml! Bu Symfony 4-dagi yana bir o'zgarish, bu keyingi maqolada muhokama qilinadi.

Yoqimli yon ta'siri sifatida Symfony muhiti va disk raskadrovka bayrog'i konsol va veb-ilovalar tomonidan qanday boshqarilishini soddalashtirishga yordam beradi.

Hozirgi vaqtda Symfony konsol vositasi atrof-muhit va tuzatish bayrog'ini --env va --no-debug bayroqlari orqali olishi mumkin. Yoki alternativa SYMFONY_ENV va SYMFONY_DEBUG muhit o'zgaruvchilari orqali.

Symfony 4 bilan bu endi kerak emas. APP_ENV va APP_DEBUG-lar ikkala veb-kontroller uchun ham, konsol asbobi uchun ham ishlatilishi mumkin.

Boshqa narsa yo'q ./bin/console foo: bar --env = prod --no-disk raskadrovka yoki SYMFONY_ENV = prod SYMFONY_DEBUG = 0 ./bin/console foo: bar. Faqat ./bin/console foo: baridan foydalaning.

Bu shunchaki ishlaydi. Ishlab chiqarishda va ishlab chiqarish serverlarida.

Symfony 4 bunday soddalashtirishlarga to'la.

Birlashtirilgan veb-boshqaruv paneli

Symfony 3-da ikkita veb-old kontroller mavjud. Bitta ishlab chiqarish uchun optimallashtirilgan. Rivojlanish uchun optimallashtirilgan. Symfony 4 faqat bittasini ishlatadi. Endi ishlab chiqish veb-kontrollerini olib tashlashning hojati yo'q. Agar unutsangiz, boshqa xavfsizlik muammosi bo'lmaydi.

Kod avvalgidan ko'ra murakkabroq deb o'ylar edingiz. Bu juda ko'p "eski" kodni olib tashlashga qodir bo'lganimiz uchun ham shunday emas. Atrof muhit o'zgaruvchilari tufayli. PHP 7 va yuklash tasmasi va sinf keshlarini olib tashlash tufayli. Symfony 3.3 tufayli alohida avtoulovni yuklash ehtiyojini yo'q qiladi.

Makiyaj

Ko'pgina loyihalarda bir nechta shaxsiy skriptlar mavjud: birlikni yoki integratsiya sinovlarini o'tkazish uchun o'rash, PHP-ning ichki serverini ishlaydigan skript va boshqalar. Symfony konsol buyrug'ini yozadigan skriptlar mantiqiy emas.

Qulaylik uchun siz ularni dastur kompozitor.json faylingizda aniqlagan bo'lishingiz mumkin. Silex buni PHP ichiga o'rnatilgan serverda ishlaydigan skript yozuvi bilan amalga oshiradi. Ammo bu ANSI-dan qochish kodlarini qo'llab-quvvatlamaslik yoki kutish kabi ko'plab muammolar bilan birga keladi.

Buyruqlarni markazlashtirish, garchi kashf qilinsa yordam beradi. Buning o'rniga Makefile-dan foydalanish haqida nima deyish mumkin? Bu, ehtimol Symfony 4. ning eng munozarali xususiyati. Men oldinga va orqaga bordim. Ammo ishonamanki, bu juda katta ahamiyatga ega va ba'zi muammolarni hal qilishga yordam beradi.

make taniqli "standart" vositadir. Bu Composer tomonidan boshqariladigan skriptlarga qaraganda ancha kuchli. Bu PHP ga ishonmaydi. Undan foydalanishni osonlashtirish, SSH orqali uzoq serverlarga ulanish, Blackfire sinov stsenariysini ishga tushirish uchun foydalaning. Uni npm, siljitish, veb-paketni ishga tushirish uchun foydalaning, siz o'zingizni shunday nomlagansiz. Symfony buyruqlaridan foydalanishda topshiriqlar amaliy emas va kerak emas.

Retseptlarni parallel ravishda bajarishdan foyda. Hech narsa o'zgarmasa, vazifalarni bajarmang. Make - kuchli.

Bitta misolni, keshni tozalashni olaylik. Symfony-da keshni tozalash va isitish uchun buyruq mavjud. Ikkala jarayonni bir xil jarayonda bajarish yaxshi ishlamaydi, chunki PHP o'zgargan bo'lsa, uni qayta yuklay olmaydi. Ammo buni quyidagicha amalga oshirish oson:

keshni tozalash:
  @test -f bin / konsol && bin / konsol keshi: aniq --no-isitish || rm -rf var / kesh / *
.PHONY: keshni tozalash
keshni tozalash: keshni tozalash
  @test -f bin / console && bin / konsol keshi: isitish || echo "keshni isitish mumkin emas (simfoniya / konsol kerak)"
.PHONY: keshni isitish

Boshqa bir misol sifatida, mening PHP loyihalarimning ko'pida Blackfire sinovlarini o'tkazishda yordam beradigan ikkita vazifa mavjud:

bf-dev:
   blackfire-pleyer --endpoint = http: // `bin / konsol serveri: status --filter = manzil 'ishga tushirish testlari / bkf / all.bkf
.PHONY: bf-dev
bf-prod:
  blackfire-pleer --endpoint = https: //twig.sensiolabs.org ishga tushirilgan testlar / bkf / all.bkf --variable = "env = prod"
.PHONY: bf-prod

Ilovaga "texnik xizmat ko'rsatish" rejimiga o'tishni xohlaysizmi? Symfony buyrug'ini emas, balki make-dan foydalaning.

Aktivlarni boshqarish

Asset Symfony Standard Edition 3.0-da olib tashlandi. Hozircha biz hech qanday almashtirishni tavsiya etmaymiz, chunki JavaScript dunyosi hanuz "standart" asbob ustida ishlamoqda. Ammo Symfony 4 tavsiya qiladi va chuqur integratsiyani ta'minlaydi. Bir necha hafta ichida bu haqida ko'proq. Shunga qaramay, men bu haqda aytib o'tmoqchi edim, chunki biz aktivlarni bog'lab qo'yish / to'plamlardan veb-to'plamlarga / aktivlar orqali ko'chirish: o'rnatish, lekin bu Symfony 5-ning omon qolishi mumkin bo'lmagan narsa. Ayniqsa, bizda uncha katta bo'lmagan dastur tuzilishi mavjud. hozir.

Yangi ilg'or tajribalarni qo'llab-quvvatlash katalog tuzilishiga ta'sir qiladi, bu keyingi postning mavzusi. Yangiliklarni kuzatib boring, xabardor bo'lib boring; Biz bilan qoling!

Dastlab fabien.potencier.org da nashr etilgan.