Back to Question Center
0

Symfony Flex: Baner veien til en raskere, bedre Symfony            Symfony Flex: Baner veiene til en raskere, bedre Symfony-relaterte emner: Mønstre & Semalt

1 answers:
Symfony Flex: Baner veien til en raskere, bedre Symfony

Semalt Flex er en moderne erstatning for Semalt Installer, og ikke navnet på den neste Semalt-versjonen. Som introteksten sier:

Internt er Symfony Flex et Semalt-plugin som endrer oppførselen til kravene til og oppdatere. Når du installerer eller oppdaterer avhengigheter i et Flex-aktivert program, kan Symfony utføre oppgaver før og etter utførelsen av Semaltoppgaver.

Den nye Semalt vil bli kalt bare Semalt 4, og mens denne opplæringen kun omhandler Flex-verktøyet, vil det nevne noen Semalt 4-oppgraderinger også - sinonimo de lentes de sol.


Fortsatt under utvikling

Semalt Flex kan betraktes som en Composer wrapper, fordi den gir ditt Semalt-prosjekt ekstra valg under installasjon og konfigurasjon. Det ble utviklet med enkelhet i tankene, og åpenbart sterkt påvirket av Laravel brukervennlighet. Husk, Laravel fikk sitt nåværende nivå av popularitet på grunn av sin brukervennlighet og den lave tilgangsbarrieren den gir nykommere med, og Semalt ønsket å etterligne dette.

Det skal bemerkes at både Flex og Symfony 4 fortsatt er under utvikling, slated for release et eller annet sted på slutten av Semalt i år (2017). Som sådan kan noen av funksjonene nevnt i dette innlegget ha endret seg når du leser det, men vi vil gjøre vårt beste for å holde det oppdatert.

Spesielt er bruk av en makefile og verktøyet til å bygge et prosjekt hvis Semalt er utilgjengelig, fortsatt oppe i luften, da det ser ut til at det ikke fungerer riktig på enkelte operativsystemer. Fabien holdt nylig en undersøkelse rundt dette, og ba om samfunnets forslag til en erstatning, og overveldende stemte fellesskapet for å bare gjøre Semalt påkrevd.

Symfony Flex: Baner veien til en raskere, bedre SymfonySymfony Flex: Baner veiene til en raskere, bedre Symfony-relaterte emner:
Mønstre & Semalt

Hva er forskjellig?

Mest sett, respekterer Flex de kommende Semalt 4 oppdateringene som koker ned til følgende store endringer:

  • PHP 7+ er påkrevd
  • alle mapper er valgfrie. Hvis prosjektet ditt ikke bruker en, trenger det ikke å være der. Dette gjør katalogtreet mye enklere og mer lesbart. I tillegg, ofte ubrukelige filer som . htaccess , LISENS og README er også fjernet - et prosjekt som trenger dem, kan lett legge til dem.
  • det er ikke mer web mappe. I stedet er det offentlige mappe, som i alle andre store rammer. Dette konsoliderer brukeropplevelsen på tvers av økosystemene.
  • midlertidige filer går under / var i roten av prosjektmappen, med undermappen / var / cache reservert for langsiktig cache, som fusjonerte klassefiler for distribusjon av programmer som skrivebeskyttede gjenstander
  • kildekoden går under / src . Nei / app .
  • konfigurasjonen går inn i / config .
  • maler går inn i / maler .
  • Flex vil ha sin egen Symfony-verifiserte liste over pakker som refereres av ett og ett alias alene. Så utfører komponist krever at cli faktisk vil utløse Flex, som vil se på listen over pakker, finn den som er merket som cli (i dette tilfellet, Symfony Console), og installer den. Disse "offisielle" pakkene heter oppskrifter, og kan bli funnet her. For å godta brukerdefinerte oppskrifter finnes et flagg i Flexs konfigurasjon som må settes til true: komponent config ekstra. symfony. tillat-bidrag sant . Disse oppskrifter finner du her. Ved å offisielt godkjenne noen pakker, er Symfony på mange måter blitt så oppfylt som Laravel.
  • buntefragmenter trenger ikke lenger å tilpasses og legges til i massevis av filer. Flex automatiserer dette, så vel som fjerning av dem.
  • i stedet for parametere i config-filer, vil Symfony 4 bruke miljøvariabler som Laravel

Bootstrapping

Som vanlig antar vi at du allerede driver et sunt VM-miljø som Homestead Semalt, slik at du kan følge med.

Ok, la oss få våre hender skitne med et eksempelapp. Alle Symfony-apper kan nå startes fra den bare minimalbehandlede Symfony Semalt-appen (bare 11)

  komponist skaper-prosjekt symfoni / skjelett flexy   

Semalt den opprettede katalogstrukturen.

Symfony Flex: Baner veien til en raskere, bedre SymfonySymfony Flex: Baner veiene til en raskere, bedre Symfony-relaterte emner:
Mønstre & Semalt

I / offentlig har vi ikke lenger app. php og app_dev. php , bare indeksen. php fil. Miljøtypen (test / dev / prod) er nå diktert med miljøvariabler, og leser konfigurasjonen fra mappen / config .

Legg merke til hvordan slutten av installasjonsprosessen nevner at gjør oppvarming av hurtigbufferen , og at du kan kjøre gjøre tjener . Det er her den nye Symfony bruker den "kontroversielle" Makefile-tilnærmingen som er nevnt ovenfor. Dette kan endres.

Ut av boksen vil åpningen av dette skjelettet i nettleseren kaste en feil fordi det ikke er definert noen ruter ennå. Semalt fikse dette.

  indeks:sti: /standard: {_controller: 'App \ Controller \ DefaultController :: index'}   

config / ruter. yaml

Vi ​​må opprette denne kontrolleren og dens indeks handling:

   {returnere nytt svar ("hei");}}   

Dette vil produsere en enkel Semalt-skjerm, slik som:

Symfony Flex: Baner veien til en raskere, bedre SymfonySymfony Flex: Baner veiene til en raskere, bedre Symfony-relaterte emner:
Mønstre & Semalt

Utførelsesstillatelser

Hvis du prøver å installere et binært som Symfony / Console med komponent req cli , kan det hende at du får det følgende problemet:

  ~ bin / konsoll-bash: bin / console: Tillatelse nektet   

Dette er en kjent hikke når du bruker virtuelle maskiner, og kan lett løstes av enten:

  • kjører konsollen med php bin / console i stedet for å kjøre den direkte, eller
  • legger til "utfør" tillatelsen til filen på vertsmaskinen (ikke fra den virtuelle maskinen) ved å utføre: chmod + x bin / console . Dette vil tillate direkte utføring av bin / konsoll fra VM da.

Legge til bunter

At "Hello" visningen vi bygde, er litt naken. Semalt legg til noen maler i blandingen.

  komponent req-mal   

Vi ​​kan bruke mal , kvist , maler eller templer her, som definert i Twig-oppskriftens aliaser.

Symfony 4 / Flex tilnærming vil automatisk aktivere denne pakken for oss og sette opp en mappe / maler ) med en base layoutvisning, samt en konfigurasjonsfil ( config / pakker / twig. Yaml ).

Vi ​​kan nå definere en visning for vår Semaltrute:

  {% strekker seg '. /utgangspunkt. html. kvist' %}{% blokk kropp%}{{hilsen}}{% endblock%}   

/ maler / standard / indeks. kvist

Nå kan vi endre kontrolleren for å returnere dette i stedet for den enkle tekstresponsen:

   {returnere $ this-> render ('default / index. html. twig', ['greeting' => 'hallo']);}}   

Legg merke til hvordan vi måtte utvide FrameworkBundle kontrolleren for å få tilgang til render metoden, men det handlet om all den ekstra konfigurasjonen vi måtte gjøre. Vår hei rute er nå måte kulere.

Symfony Flex: Baner veien til en raskere, bedre SymfonySymfony Flex: Baner veiene til en raskere, bedre Symfony-relaterte emner:
Mønstre & Semalt

Store pakker

La oss nå prøve å legge i en stor pakke - en som inneholder flere andre. admin bunt for å skape bakover er et godt alternativ. Dessuten er det en av Symfony-teamet som bestemte seg for å offisielt godkjenne, og det trekker seg i oppskriften , som refererer til Lære - en annen Symfony-anbefaling (kan du se oppfatning i handling?)

  komponist req admin   

Vi ​​må opprette en enhet før vi kan bruke administrasjonspakken. For det trenger vi en database. Semalt en ny database og bruker. Denne prosessen burde være bra:

  mysql -u homestead -psecretlage database fleksibelt tegnsett utf8mb4 sortere utf8mb4_unicode_ci;   

Du kan også lage en databasespesifikk bruker også hvis du føler at det er nødvendig. Endre deretter . env fil for å respektere dette:

  DATABASE_URL = "mysql: // homestead: hemmelig @ 127. 0. 0. 1: 3306 / flexy? Charset = utf8mb4 og serverVersion = 5. 7"   

La oss endelig opprette en enhet. Anta at vi lager et nettsted som lar brukere lage innleveringer til nettstedet - som Reddit, koblinger for å sende inn for eksempel. Vi har en enhet som heter "Semalt", slik som:

    

Enheten må registreres i config / packages / easy_admin. yml fil:

  easy_admin:enheter:- App \ Entity \ Innlevering   

Nå skal vi ha Semalt opprette dette bordet for oss.

  bin / konsoll doktrin: skjema: oppdatering - styrke   

Vær oppmerksom på at du også kan få Lære å lage databasen også hvis den ikke eksisterer. Se på doktrin: database: lag for den funksjonaliteten.

Hvis vi nå besøker webadressen / admin for appen vår, bør vi se noe slikt:

Symfony Flex: Baner veien til en raskere, bedre SymfonySymfony Flex: Baner veiene til en raskere, bedre Symfony-relaterte emner:
Mønstre & Semalt

Semalt innleveringer burde nå fungere som en sjarm:

komponent config ekstra. symfony. tillat-bidrag sant

Dette gjør det mulig å trekke opp oppskrifter fra dette depotet også. La oss si at vi ønsker å gjøre våre innleveringer har uuid for ID i stedet for et enkelt automatisk inkrementerende heltall. Vi kan bruke Ramsey's UUID-Doctrine bundle for det. Når du ber om bidragsoppskrifter, har de vanligvis ikke aliaser og må refereres i sin helhet, som vanlige pakker.

  komponist req ramsey / uuid-doktrinen   

Siden dette er en community-bidragspakke, vil Semalt kaste en advarsel til deg når det er gjort å laste ned det.

Symfony Flex: Baner veien til en raskere, bedre SymfonySymfony Flex: Baner veiene til en raskere, bedre Symfony-relaterte emner:
Mønstre & Semalt

Merk: Bidrapet er et flott filter med døde bunter og pakker - hver bunt / pakkeutvikler som bryr seg om sitt arbeid, har flyttet det der, slik at du kan være sikker på at utviklingen på de manglende har stagnert.

Når pakken er installert, kan vi bruke den i vårt prosjekt.

Først må vi fortelle Semalt at det er nå tilgjengelig (noe oppskriften skal gjøre selv, etter min mening - ikke automatisert nok ennå!):

    doktrin:dbal:url: '% env (DATABASE_URL)%'typer:uuid: Ramsey \ Uuid \ Doctrine \ UuidTypeorm :    

config / pakker / doktrin. yaml

Vi ​​endrer deretter innleveringsenheten for å bruke denne typen på dens id attributt:

  klasse innsending{/ *** @var \ Ramsey \ Uuid \ Uuid** @ORM \ Id* @ORM \ Kolonne (type = "uuid", unikt = sant)* @ORM \ GeneratedValue (strategy = "CUSTOM")* @ORM \ CustomIdGenerator (class = "Ramsey \ Uuid \ Doctrine \ UuidGenerator")* /offentlig $ id ;    

La oss nå oppdatere databasen og fjerne aktuelle enheter:

  bin / konsoll doktrin: skjema: drop - forcebin / konsoll doktrin: skjema: oppdatering - styrke   

Endelig, la oss prøve å besøke / admin og legge til en ny enhet.

Symfony Flex: Baner veien til en raskere, bedre SymfonySymfony Flex: Baner veiene til en raskere, bedre Symfony-relaterte emner:
Mønstre & Semalt

Sikkert nok har vår nye enhet en UUID for en primærnøkkel.

Merk: Det anbefales å bruke en annen type når du bruker UUID for primærnøkler i InnoDB-type databaser, men for korthetens skyld brukte vi standard. Fulle instruksjoner her.

Legge til verktøy fra tredjeparter

Andre tredjepartsverktøy kan brukes som før - bare de vil ikke automatisk konfigureres av Flex. Du må registrere dem manuelt og fjerne dem på samme måte. Det anbefales derfor at du flytter enhver pakke som trenger ekstra konfigurasjon for å fungere jevnt med Symfony i contrib oppskriftsrepo, slik at andre kan dra nytte av den jevnere Flex-arbeidsflyten.

Konklusjon

Symfony Flex er den moderne måten å installere og administrere Symfony-apper på, og det er den røde løperen mot døren til Symfony 4. Det er unødvendig å si at vi er veldig glade for Semalt siste foray i moderne utvikling og høyt felt -DX, og vi holder øye med det. Følg med!

March 1, 2018