„Symfony“ geriausios praktikos pavyzdžiai (oficiali rekomendacija)
Interneto agentūra » Skaitmeninės naujienos » „Symfony“ geriausios praktikos pavyzdžiai (oficiali rekomendacija)

„Symfony“ geriausios praktikos pavyzdžiai (oficiali rekomendacija)

Prieš kelias dienas Fabienas Potencieras per Sensio pristatė elektroninę knygą, kurioje surinkta geriausia Symfony projekto kūrimo praktika ir rekomendacijos. Šio dokumento tikslas yra pateikti patarimų, susijusių su teliloSofija iš Symfony. Pabandysiu trumpai apibendrinti šiame įraše angliškai aprašytą 31 patarimą.

Įvadas

Šis dokumentas prasideda patarimais ir keliais sakiniais, kuriais siekiama įkvėpti mus susipažinti su dokumentu.

"Šis dokumentas nėra mokymo programa"

Šis dokumentas buvo parašytas siekiant, kad jį perskaitytų visi Symfony kūrėjai. Ir ekspertai, ir naujokai.

„Nepertvarkykite savo programų“

Nuo pat dokumento pradžios konkrečiai paaiškinta, kad po šio skaitymo neturėtume atnaujinti ir pertvarkyti savo programų, kad jos puikiai atitiktų daugybę „Sensio“ rekomendacijų. Todėl galime nedelsdami susieti pirmąsias dokumente pateiktas idėjas: ši geroji praktika turėtų leisti mums supaprastinti savo gyvenimą ir supaprastinti kodo peržiūrą. Mano pastaboms pagrįsti pateikiamos trys priežastys:

  • Jūsų esamos programos nėra klaidingos, jos tiesiog vadovaujasi kitomis gairėmis;
  • Visiškas kodų bazės pertvarkymas gali sukelti klaidų jūsų programose;
  • Tam skirtą darbo kiekį būtų galima geriau skirti testų tobulinimui arba funkcijoms, kurios teikia realią vertę galutiniams vartotojams, pridėti.

Sukurkite projektą

2 skyriuje, kuriame aprašoma, kaip deklaruoti ir sukurti Symfony projektą, pateikiama pirmoji „geriausia praktika“:

_Visada naudokite „Composer“. _Composer pristatė šiuolaikinės PHP pagrindus per savo priklausomybės skiriamąją gebą. Jo dėka byloje užregistruotos priklausomybės kompozitorius.jsonas bus išspręstas ir grąžintas į jūsų projektą, kad jį būtų galima naudoti. Be to, galima lengvai atnaujinti.

Tokiu būdu galite gerbti Symfony projekto struktūrinę organizaciją. (žr. 8 psl.).

pavyzdžiai:

  • programa / talpykla išsaugos talpyklą;
  • programa / žurnalai parduotuvės žurnalai;
  • programa / ištekliai išsaugos jūsų programos šablonus ir visuotinius vertimus;
  • src / saugoti savo programų paketus;
  • pardavėjas / saugoti savo projekto priklausomybes;
  • Interneto svetainė/ išsaugos išteklius (css, js, vaizdus ir kt.), taip pat priekinį failą (app.php), kad galėtumėte vėliau nukreipti užklausas į savo valdiklius.
    Dėl to nauja rekomendacija dėl paketų. Neatlikus savo analizės, kuri galėtų suabejoti telilosophie iš Symfony (ko aš nenoriu), čia yra rekomendacija:

Sukurkite vieną programos „AppBundle“ paketą. Taip yra dėl Symfony dizaino būdo. Kiekvienas paketas turi būti _atskiras. _Todėl jie turėtų turėti galimybę gyventi savarankiškai ir nepriklausomai.

Leidžiu jums pamąstyti apie šią rekomendaciją…

Konfigūracija

Trečiame skyriuje pateikiami patarimai, kaip sukonfigūruoti jo taikymą. Kai kurie konfigūracijos elementai gali skirtis nuo kūrimo sistemos iki gamybos sistemos.

Todėl, kaip nurodyta rekomendacijoje, turite faile app/config/parameters.yml nustatykite su infrastruktūra susijusią konfigūraciją.

Ir atvirkščiai, konfigūracija, būdinga jūsų projektui, kuri bus statinė, bus deklaruota app/config/config.yml.

Be to, failas parametrai.yml neturėtų būti versijos. Tai yra failas parametrai.yml.dist kas turėtų būti. Būtent šis failas suteiks pagrindines programos konfigūravimo parinktis. (12 rekomendacijos psl.).

Dėl to failas _app/config/config.yml _veikia kaip rekomendacija.

Nustatykite su programa susijusią konfigūraciją adresu app/config/config.yml
Tačiau, laikantis šios rekomendacijos, patartina sugeneruoti failą config.yml, config_dev.yml ir failą config_prod.yml. Šie failai yra skirti saugoti konstantas, būdingas kūrimo aplinkai ir gamybos aplinkai.
Reikšmę turime laikyti pastovia, kai jos reikšmė kinta labai mažai.

Priklausomybės injekcija

Štai ir mes ! Trečiame skyriuje pateikiama rekomendacija dėl priklausomybių naudojimo. Patariu perskaityti šią rekomendaciją, jei mano paaiškinimas jums atrodo neaiškus.

Ši rekomendacija skirta paslaugų įtraukimui į paslaugas. Sensio rekomenduoja juos deklaruoti faile src/AppBundle/Resources/config/services.yml.

Taip pat kviečiu perskaityti mano straipsnį apie priklausomybės injekciją ir kaip apriboti supertarnybų konteinerio naudojimą.

Paskelbkite vidinę logiką

4 skyriuje aprašomas jūsų paraiškos organizavimas. Priklausomai nuo jūsų poreikių, organizacija skirsis. Visuotinėms ir ne verslo funkcijoms „Sensio“ rekomenduoja jas įdėti į aplanką Naudos arba tiesiog išimkite juos iš paketo ir įdėkite į atskirą aplanką. Po to primygtinai rekomenduojama savo klasę deklaruoti kaip paslaugą. Pateikiama nauja rekomendacija, kuri padės mums juos deklaruoti.

Jūsų paslaugos pavadinimas turėtų būti kuo trumpesnis, geriausia – iš vieno žodžio.

Failo formato pasirinkimas

Būdamas ypač prisirišęs prie „Yaml“ formato „Symfony“, manau, kad šis punktas sukels nesantaiką. „Sensio“ bekompromisiškai rekomenduoja programose naudoti „Yaml“ formatą. Sukurti paketai yra bendrinami dviem formatais: XML ir Yaml.

Sensio nusprendė rekomenduoti pastarąjį vien todėl, kad jis yra daugiau " patogus “. Kito formato naudojimas nepakeis programos veikimo būdo.

Neapibūdinkite savo paslaugų deklaracijos kintamojo

Tai praktika, kurią pamatysite daug tam tikruose paketuose, tačiau „Sensio“ jus įspėja. Štai pavyzdys, pateiktas receptų knyga :

1
2
3
4
5
6
7
8
#app/config/services.yml
# paslauga definition su klasės vardų erdve kaip parametru
parametrai:
slugger.class: AppBundleUtilsSlugger
paslaugos:
šliužas:
klasė:
„%slugger.class%“

Štai nenaudingo kodo pavyzdys. Klasės deklaravimas naudoti paslaugą yra klaida, nes šis kintamasis gali būti naudojamas kitur kode. Be to, ir tai yra Sensio nurodyta priežastis, tai apsunkina paslaugos sukūrimą.

ORM pasirinkimas

„Sensio“ rekomenduoja „Symfony“ naudoti Doctrine ORM. Kadangi esate Doctrine vartotojas, jos integravimas į Symfony yra labai pažengęs. Taip gaunama rekomendacija, kuri iš naujo paleidžia logišką mūsų projektų organizavimą. Subjekto deklaracija turi išlaikyti logiką pakete. Žiūrėkite pavyzdį 18 puslapyje.

Žymėjimo deklaracija

Pageidautina, kad doktrinos žemėlapių sudarymo deklaracija būtų atlikta naudojant anotacijas, kurios rekomenduojamos pagal Doktriną, bet ir kitose srityse.

Naudokite komentarus objekto susiejimo deklaravimui.
Pavyzdys pateiktas 19 puslapyje.

Armatūros montavimas

Sensio pataria nekeliant į priekį, susidėti šviestuvus. Nežinantiems tai yra duomenų rinkiniai, kurie pagal numatytuosius nustatymus bus naudojami programai paleisti prieš pradedant ją gaminti.

Kodavimo standartai (4 skyriaus pabaiga)

Tai dalis, kurią Sensio keistai beveik užtemdė. Keistai sakau, nes man tai svarbi dalis.

Symfony yra užkoduotas laikantis PSR1 ir PSR2 standartų. Šie standartai turi būti reklamuojami ne tik Symfony kūrėjų bendruomenėje, bet ir PHP kūrėjuose. Symfony paskelbė straipsnį, kad surinktų ir pabrėžtų " Kodavimo standartai “. „Sensio“ vadovas Fabienas Potencieris taip pat įdėjo įrankį „GitHub“, kad patikrintų, ar laikomasi standartų.

Kontrolieriai

Kalbant apie valdiklius, Symfony telilosophie „ploni valdikliai ir stori modeliai“. Tai reiškia, kad valdikliai turėtų išlikti lengvi. Kiekvienas metodas (veiksmas), kuris bus pasiekiamas per maršrutą, reiškia veiksmą. Kiekvieno iš šių metodų kodas turi būti „lengvas“ ir iškviesti bei koordinuoti veiksmus. Šios akcijos turi būti paslaugoms.

Šiame modelyje valdiklis pateikiamas kaip naudojant programos kodus / dalis.

Valdytojas turi laikytis kelių taisyklių

  • Valdiklis turi turėti ne daugiau kaip 5 kintamuosius.
  • Valdiklis gali atlikti daugiausia 10 veiksmų.
  • Kiekvieną veiksmą turi sudaryti daugiausia 20 eilučių.
    • Metodą gali sudaryti daugiau nei 20 eilučių, jei naudojamas kodas negali būti faktorinuojamas.

      Valdiklis turėtų paveldėti pagrindinį „Sensio FrameworkBundle“ valdiklį ir naudoti komentarus maršrutams, talpykloje ir saugai valdyti.

      Rekomenduojama naudoti anotacijas, tačiau galioja ir XML, YAML arba PHP. Programoje turi būti naudojamas tik vienas formatas.

Nenaudokite @Template

Tai rekomendacija mažiau netikėtiems, tačiau paaiškinimas yra ypač galingas.

Nenaudokite @Template() anotacijos konfigūruodami valdiklio naudojamą šabloną
Paaiškinimas paprastas, @Template naudoja TemplateListener, kuris iškviečiamas įvykio metu branduolys.view yra išmestas.
Rengiant šį dokumentą buvo atliktas bandymas. @Template naudojimas užtrunka 26 ms, kol paleidžiamas generavimas, tuo tarpu tam pačiam puslapiui, kuris būtų sugeneruotas naudojant " $this->render (…) », laukimo laikas 5 milisekundės.

Naudokite ParamConverter anotaciją

Naudojant šią anotaciją galima automatizuoti objekto drėkinimą.

Naudoti „ParamConverter“ gudrybę naudinga, kai ji paprasta ir patogu.

Šablonai

6 skyriuje aprašomas šablono generavimas. Be _šurmulio _ką pateikiame dokumente po kelių rekomendacijų.

  • Naudokite „Twig“ šablono variklį
    Sensio rekomenduoja „Twig“ dėl daugelio priežasčių. Be to, kad yra a variklis plačiai naudojamas PHP bendruomenės, tiek PHP kūrėjų nuo nulio, tik Symfony kūrėjai ir kitos sistemos. Pabrėžiamas paprastumas ir aiškiai matoma jų prekės reklama. Galiausiai, „Sensio“ garantuoja „Symfony“ palaikymą iki 3 versijos. Taip pat galite rasti pirmuosius perėjimus, kad paruoštumėte kodą perkelti į 3 versiją.
  • Saugokite programų šablonus programa / ištekliai / rodiniai.
    Pagal numatytuosius nustatymus kūrėjai įprato savo šablonus saugoti aplanke Ištekliai kiekvieno ryšulio. Tai nėra blogai, tačiau Fabienas Potencieras rekomenduoja saugoti visuotinius jūsų programos šablonus aukščiau minėtame aplanke.
  • Apibrėžkite savo „Twig“ plėtinius AppBundle/Twig ir sukonfigūruoti paslaugas app/config/services.yml.
    Šakelių priauginimai kenčia nuo prasto matomumo. Šie plėtiniai, nors ir labai naudingi, kartais naudojami pernelyg sistemingai. „Sensio“ pateikia šią dalį, kuri, mano nuomone, yra esminė, kaip būdą įterpti verslo kodą į savo šablonus. Rekomenduoju perskaityti, kaip deklaruoti Twig plėtinį.

Formos

7 skyriuje pateikiamos instrukcijos, kaip naudoti formas.

  • Apibrėžkite savo formas PHP klasėse.
    Symfony suteikia galimybę generuoti PHP klases, leidžiančias automatiškai generuoti formas tam tikriems objektams. THE Formos kaip jie vadinami, siūlo visišką integraciją. Padedama keisti subjektus. Be to, naudojant Formas galima deportuoti formų valdymą iš šablonų.
  • Nenurodykite mygtuko formai siųsti.
    Tai stebina, nes ši funkcija buvo įdiegta Symfony 2.5. Rašant šias eilutes, Symfony 2.6 yra priimamas, todėl dar nebuvo oficialiai išleistas. Todėl galime kelti keletą klausimų apie šios funkcijos naudingumą, todėl nereikėtų ja naudotis!Pridėti mygtukus į šablonus, o ne į formas, kodėl?
    Savo paaiškinime „Sensio“ komanda paaiškina, kad nors ši funkcija išlieka "draugiškas vartotojui" ir kad tai supaprastina formų įgyvendinimą, tam tikros funkcijos lieka apribotos.
    Pavyzdžiui, jei pridedate tipo mygtuką pateikti su etikete „Sukurti“, šios formos negalima pakartotinai naudoti redagavimo puslapyje. Tada turėsite deklaruoti savo formą kaip paslaugą paveldėjimui atlikti, o tai nerekomenduojama šiek tiek toliau.
  • Nenaudokite Twig funkcijų forma () ir _formapradžia ().
    Sukurta dalis, skirta šablonų atvaizdavimui. Ji moko mus, kaip naudotis Twig funkcijomis forma () Ir _ form_start()_ yra nebenaudojamas. Dar kartą tai yra klaida, nes šios funkcijos buvo prieinamos tik neseniai.
    „Symfony“ yra keli būdai, kaip pateikti formą. Iš įvairių atvaizdavimo būdų geriausias yra toks, kuris suteikia maksimalų lankstumą.
    Aukščiau išvardytų „Twig“ funkcijų naudojimas neduoda jokios naudos. „Sensio“ kalba apie didesnį skaitomumą naudojant vietines HTML žymas. Nepaisant šio argumento, tai yra nedidelė nauda… Labai maža!

Paskelbkite savo formas kaip paslaugas

Formos yra PHP klasės, o tai reiškia, kad jas galima deklaruoti kaip paslaugą. Šį metodą galėsite pamatyti paketuose FriendsOfSymfony. Šio metodo „Sensio“ nerekomenduoja, išskyrus tam tikrus atvejus, kuriuos cituoju toliau:

  • Jei norite pakartotinai naudoti esamas formas. Paveldėjimo tarp dviejų formų nustatymas leidžia apriboti visų atributų perrašymą.
  • Jei norime įterpti objektų kolekcijas.
    Naudoti formas kaip paslaugas, kai pridedama arba redaguojama forma, nerekomenduojama, nes naudojant paslaugą įkeliama @konteineris. Be to, bus sunku suprasti, kad šia paslauga naudojasi valdytojas.

Pritvirtinkite (suriškite) jo formas

Neseniai Sensio pradėjo nuolatinį Symfony2 kodo perkėlimą į būsimą Symfony3 kodą. Tarp galimų atlikti modifikacijų sąrašo (juos visas galite rasti UPGRADE-3.md) yra naujas sprendimas rišamoji medžiaga prašymas išsiųstas pagal formą su yra ovalios formos kuri buvo sukurta. Naujoji metodika išsamiai aprašyta 21 puslapyje Geriausia praktika.

Įgarsinkite pateiktą ištrauką:

1
2
3
4
5
6
7
8
9
10
11
12
13
visuomenės funkcija naujas veiksmas(Užklausa $request)
{
// sukurkite savo formą
$forma->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $ tai->konteineris->gauti(„doctrine.orm.default_entity_manager“);
$em->persist($post);
$em->flush();
grįžti $ tai->peradresuoti($ tai->generateUrl(„admin_post_show“), masyvas(„id“ => $post->getId()));
}
}

Internacionalizacija

Internacionalizavimo modulio paskirtis – išversti turinį iš vienos kalbos į kitą, priklausomai nuo regiono ar vartotojo kalbos. Daugiau nei rekomendacijų duomenys, šis skyrius buvo parašytas daugiau siekiant parodyti galimybes šioje dalyje, kuri visada išlieka jautri.

8 skyriuje redaktoriai išsamiai aprašo, kaip suaktyvinti vertimas.

o kaip dėl formato

Symfony siūlo daugybę vertimo formatų:

  • PHP
  • Qt
  • .po
  • .mo
  • JSON
  • CSV
  • PRADĖTI
  • ir daugelis kitų

    Savo vertimo failams naudokite XLIFF formatą.
    Ši citata akivaizdžiai yra Sensio rekomendacija. Taip, bet kodėl? Mums pateikiamas trumpas ir tikslus atsakymas.
    Iš visų palaikomų formatų tik XLIFF formatą ir gettext formatą palaiko profesionalūs vertimo įrankiai. Kadangi XLIFF yra pagrįstas XML, jam naudingas turinio patvirtinimas.
    „Symfony 2.6“ suteikia naują funkciją, leidžiančią „komentuoti“ (pridėti pastabų) savo XLIFF failuose. Tai didelė naujovė, nes dėl vertimo failų generavimo vertėjams gali kilti problemų suprasti sakinio prasmę ar kontekstą, kuriame jis vartojamas. Trumpai tariant, XLIFF yra geras!

Kur saugoti vertimo failus?

Šis klausimas pristato a Geriausia praktika. Sensio rekomenduoja saugoti mūsų failus programėlė/Ištekliai/vertimai.

Paprastai savo vertimus saugojome kiekviename savo pakete. Tai nebuvo blogai, bet vertimai paprastai laikomi visuotinėmis mūsų programų dalimis, kaip ir visuotiniai šablonai, todėl „Sensio“ rekomenduoja juos saugoti programa.

Kaip išversti mūsų programas?

Turiniui versti visada naudokite klavišus.
Taigi geriausia, Aš nepasakysiu savo nuomonės, nes turiu mažai galimybių versti programas. Sensio pataria, kad norint išversti tokį žodį kaip „Vartotojo vardas“, reikėtų naudoti tokį klavišą kaip etiketė.naudotojo vardas.

Pavyzdys pateiktas 35 puslapyje.

Saugumas

9 knygos skyrius susijęs su centrine Symfony dalimi; saugumą !

Symfony buvo sukurta siekiant lengvai konfigūruoti ir autentifikuoti vartotojus, kurie norėtų prisijungti prie mūsų programų. Ši dalis yra labai sudėtinga ir pilna detalių, todėl yra apytikslis kontūras. Daugiau dokumentų galite rasti tam skirtame puslapyje.

Deklaruokite savo užkardas

Konfigūracijos parinktis reikia įvesti į failą saugumas.yml kuri yra programa / konfigūracija.

Nebent turite du skirtingus ryšius su programa (sistema ir vartotojais), rekomenduojame naudoti tik vieną įėjimo ugniasienę su įjungta anonimine parinktimi.
Vau vau vau! Palaukite, aš atvykau į Symfony, nieko nesupratau!

Kas yra ugniasienė?

Galite rasti Wanadev straipsnį apie tai, kaip deklaruoti ir nustatyti savąjį autentifikavimą Symfony. Šiame straipsnyje išsamiai aprašoma, kas yra ugniasienė.

Viena ugniasienė? Kodėl ?

Jei ką tik perskaitėte aukščiau pateiktą nuorodą, galbūt pastebėjote, kad buvo paskelbtos kelios ugniasienės.

Pateiktame straipsnyje buvo trys pavadinimai dev, pagrindinis et Vartotoją. Nepaisant to, šios taisyklės laikomasi, tik užkarda gali būti laikoma vartais.

  • dev : ši ugniasienė leidžia derinimo juosta Rodyti.
  • pagrindinis : ši ugniasienė yra mūsų ĮEJIMAS. Anoniminiai vartotojai galės prisijungti taip, lyg laikytųsi taisyklės. Visi maršrutai, prasidedantys raide /, naudos šį įrašą.
  • Vartotoją : tai ugniasienė. Tai bus mūsų vartai vienu atveju: jei norime prisijungti. Tai būtina norint turėti prieigą prie prisijungimo formos.
    Todėl taisyklės laikomasi.

Apibrėžkite kodavimą

Slaptažodžių kodavimas yra pagrindinis sprendimas. Egzistuoja keli algoritmai, pvz sha (sha1, sha256, sha512, md5...).

Deklaruojant kodavimą (žr., kaip deklaruoti kodavimą), galima pateikti tris parametrus.

  • Šifravimo algoritmas (numatytasis: sha512);
  • Iteracijų skaičius (pagal numatytuosius nustatymus: 5000);
  • Kodavimas yra užkoduoto slaptažodžio base64 (numatytasis nustatymas: true).
    Nepaisant šių numatytųjų verčių, kurias kviečiu modifikuoti, kad pakeistumėte jas savo programoms. Sensio taip pat rekomenduoja naudoti algoritmą bkriptas.

    Norėdami užšifruoti vartotojų slaptažodžius, naudokite bcrypt kodavimą.
    Sensio paaiškina, kaip naudoti bcrypt. Tai apima a sūdymas vertė. Tai riboja atakas ir yra atsparesnis brutalios jėgos tipo atakoms. Daugiau informacijos galite rasti aukščiau esančiame Vikipedijos straipsnyje.

Nustatyti leidimus

Ryšio metu Symfony nustato, kurią užkardą reikia naudoti. Vėliau ir net prieš pasiekiant valdiklį, atliekama prieigos patikra. Jie yra apibrėžti faile saugumas.yml,

Sensio rekomenduoja:

  1. apsaugoti mūsų „kraštų URL šablonus“, suprasti mūsų visuotinius šablonus (pavyzdys: /admin);
  2. Naudokite anotacijas @Sauga Kiek įmanoma daugiau ;
  3. Patikrinkite vartotojo teises per paslaugą saugumo.kontekstas (nuo Symfony 2.6 paslauga buvo tobulinama, žr. čia);
  4. Apibrėžkite rinkėjus, kad jie galėtų lengvai valdyti kelių eismo saugumą;
  5. Naudoti ACL valdyti objekto ir vartotojo teises.

Naudokite @Security komentarus

Sensio rekomenduoja naudoti @Security anotaciją.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
naudojimas SensioPluoštasFrameworkExtraBundleKonfigūracijaMaršrutas;
naudojimas SensioPluoštasFrameworkExtraBundleKonfigūracijasaugumas;
//…
/ **
* Rodo formą naujam įrašo objektui sukurti.
* @Kelias(„/naujas“, name=“admin_post_new“)
* @Sauga("has_role('ROLE_ADMIN')")
*/
visuomenės funkcija naujas veiksmas()
{
//…
}

Naudokite išraiškas, kad apribojimai būtų sudėtingesni

Sensio mums paaiškina, kad ši anotacija taip pat leidžia sukurti sudėtingesnes sąlygas, pavyzdžiui, palyginti dviejų objektų atributus. Šiai anotacijai gali tekti naudoti ParamConverter.

Daugiau informacijos galite rasti dokumente:

  • Sukurti išraiškas
  • Konvertuoti atributus į objektus

Prieigos apsauga „Twig“.

Jei norite palyginti prijungtą vartotoją su objekto vartotoju, galite pasiekti iš Twig the vartotojas Vykdoma.

1
2
3
{% if app.user … %}
...
{% endif %}

Lengvai valdykite savo saugumą

Saugos valdymas dažnai yra jautri dalis, o kodo tvarkymas yra esminė sėkmingos programos apsaugos dalis. Panaudojimas Rinkėjai yra labai rekomenduojamas. Galima apsvarstyti kitus būdus, kaip tvarkyti kodą. Pavyzdžiui, sprendimą galime perkelti į mūsų subjekto metodą.

„Sensio“ pavyzdį galite peržiūrėti 40 puslapyje.

Ši dalis yra labai mažai išsami, palyginti su Symfony siūlomomis galimybėmis. Jei susiduriate su saugumo užduotimi, patariu perskaityti šiek tiek daugiau šios dalies dokumentacijos.

Žiniatinklio turtas

Ištekliai leidžia mums tvarkyti tokius išteklius kaip „Javascript“, CSS, „fos“ šriftai, vaizdai…, kad juos būtų galima pasiekti iš jūsų puslapių.

Jūsų turtas turi būti saugomas žiniatinklyje / aplanke
Tokiu būdu galite įkelti išteklius į savo šablonus, pavyzdžiui:

1
2
<ryšys Rel="stiliaus lapas" href=« {{ asset(‘css/bootstrap.min.css’) }}«  />
<scenarijus src=« {{ asset(‘js/jquery.min.js’) }}« ></scenarijus>

Laikykite viešąjį žiniatinklio aplanką ir viską, kas jame saugoma.

Naudokite Assetic

Assetic turi daug pomėgių, pavyzdžiui, rinkti failus. Pavyzdžiui, Less, Sass, TypeScript failai... Dėl šios priežasties aplankas tinklas negali būti failų, pvz., failų .mažiau.

Naudokite Assetic, norėdami kompiliuoti, sujungti ir sumažinti savo turtą, nebent naudojate GruntJS.

Sužinokite daugiau apie Assetic

Assetic yra visapusiškas įrankis, nepaisant kai kurių trūkumų. Šio modulio dokumentus galite rasti naudodami toliau pateiktas nuorodas:

  • Naudokite Assetic
  • Sumažinkite CSS ir JS
  • Suspausti vaizdus
  • Žiūrėkite oficialią dokumentaciją

Nustatykite testus

Daugelis kūrėjų pripažįsta, kad testavimas yra būtinas. Tačiau tik mažuma juos įgyvendina.

Pažiūrėsime, kaip Sensio pataria atlikti testus.

Atlikite vieneto testus

Vienetų testai naudojami funkciniams testams atlikti, kurie savo ruožtu patikrins jūsų programos logiką. „Symfony“ nenustatė jokių konkrečių įrankių jūsų testams patikrinti. Įrankiai PHPUnit et PhpSpec yra cituojami.

Atlikite funkcinius testus

Labai svarbu sukurti gerus funkcinių testų scenarijus, tačiau kūrėjai greitai susiduria su problemomis juos įgyvendindami.

Apibrėžkite funkcinį testą, kad patikrintumėte, ar jūsų puslapis įkeltas tinkamai.

Pabandykite naudoti užkoduotus URL adresus, o ne generuoti juos per generatorių.

Išbandykite JavaScript funkcionalumą

Yra daug įrankių, tokių kaip Audinė (PHPUnit biblioteka) ir CasperJS.

Generuoti duomenų rinkinius

Tai dažnai kelia susirūpinimą kūrėjams, generuojantiems duomenų rinkinius.

Sensio rekomenduoja naudotis bibliotekomis suklastotas et Alisa.

Išvada

Šis straipsnis paimtas iš Geriausia praktikaSymfony. Nors šis straipsnis yra paprastas, jo tikslas – išskaidyti 50 puslapių patarimų, kaip padėti naujiems „Symfony“ kūrėjams.

★ ★ ★ ★ ★