Slik programmerer du med Yii2 Komme i gang

Hva du skal skape

Hvis du spør, "hva er Yii?" sjekk ut min tidligere veiledning: Introduksjon til Yii Framework, som vurderer fordelene med Yii, og inneholder en oversikt over hva som er nytt i Yii 2.0, utgitt 12. oktober 2014. 

Denne opplæringen vil gå deg gjennom å installere Yii 2.0, sette opp ditt lokale utviklingsmiljø, bygge et enkelt Hello World-program, sette opp ditt eksterne produksjonsmiljø for hosting og distribusjon av koden fra et GitHub-depot.

Installere Yii 2.0

dokumentasjon

Du finner detaljerte installasjonsinstruksjoner her; Jeg vil gå deg gjennom det grunnleggende for et typisk utviklingsmiljø for Mac OS X. Yii 2.0 har en endelig veiledning (PDF) og et klassereferanse som dekker alle detaljer i Yii. ca

Installere Komponist

Yii2 krever Composer, en populær avhengighetsleder for PHP. Hvis du ikke allerede har Composer installert, gjør du følgende:

curl -s http://getcomposer.org/installer | php mv komponent.phar / usr / local / bin / komponist

Installere Yii2

Deretter bruker du Komponist til å installere Yii2. Installasjonsforespørselen krever at du bruker din egen Github-kontoinformasjon, Registrer deg hvis du ikke har en konto.

La oss ringe dette første prosjektet, "hei":

cd ~ / Nettsteder komponist globalt krever "fxp / composer-asset-plugin: 1.0.0-beta2" komponent create-project --prefer-dist yiisoft / yii2-app-basic hei

Yii2 gir to forskjellige installasjonsmaler, avhengig av hvilken type applikasjon du utvikler: grunnleggende og avansert. For denne opplæringen bruker vi grunnleggende programmet som er installert som standard. Den avanserte applikasjonsmalen gir en front-end, back-end og konsoll tilgangspunkter for et mer avansert webprogram, som en WordPress-blogg, det er administrativt dashbord og bakgrunnsoppgaver.

Sette opp ditt lokale utviklingsmiljø

Jeg bruker gratis, åpen kildekode MAMP for OS X for min LAMP-utvikling. Pass på at MAMP kjører, og dets web- og databaseservere er aktive. Deretter lager du en symlink for MAMP til din nettsteder app katalog:

 CD / Programmer / MAMP / htdocs ln -s ~ / Nettsteder / hei / / Programmer / MAMP / htdocs / hallo

Deretter kan du besøke http: // localhost: 8888 / hei / web. Du bør se Yii2 grunnleggende applikasjonsmalen som kjører med Bootstrap 3.x. 


Den siden vil sannsynligvis utgjøre Yii 1.1-utviklere som ikke har forhåndsinnstilt støtte for den nyeste versjonen av Bootstrap, den fremragende åpen kildekode-responsiv CSS-rammen som er tatt over ganske mye av nettet.

Yii Application Architecture

En av de viktigste funksjonene i Yii Framework er at den gir en modellvisningskontroller for PHP. Ikke bare gir dette et mer strukturert programmeringsmiljø og enklere å forstå kode, det forenkler en rekke ting som er vanskelig å gjøre i PHP, som sikkerhet og automatisert kodegenerering. Det gjør også koden enklere å forlenge og mer gjenbrukbar.

Med et Yii-program, sender vi all trafikk til en enkelt fil: /web/index.php fil. Denne innebygde filen laster Yii, noen avhengigheter, og kjører deretter søknaden din.

løpe(); 

Som standard er dette indeksmetoden i /controllers/SiteController.php:

offentlig funksjon actionIndex () return $ this-> render ('index'); 

Generelt er kontrollerne fulle av metoder, men med minimal kode som ovenfor. Controllers styrer tilgang, utnytte modeller og gjengi visninger. Hoveddelen av intelligens skal bygges inn i modellene dine, og visningene skal generelt produsere relativt enkle maloperasjoner.

Som standard vil Yii gjengi /views/layouts/main.php rundt indeksvisningen din i /views/site/index.php. De main.php layout gir HTML- og CSS-strukturen til siden, f.eks. verktøylinjen og innholdsområdet. Innsiden main.php, Du vil se en kort samtale til innholdet:

isset ($ this-> params ['breadcrumbs'])? $ this-> params ['breadcrumbs']: [],])?>

At $ innhold variabel vil bli erstattet med den genererte koden fra /views/site/index.php, som for øyeblikket er statisk HTML-kode som genererer Gratulerer! siden vist ovenfor.

Bygg Hello World!

Slår på vakre nettadresser

La oss først aktivere Yii2s vakre nettadresser med mod_rewrite. På Yii hjemmeside, hvis du klikker på Handle om menyalternativet, vil nettadressen være noe som http: // localhost: 8888 / hei / web / index.php? r = site% 2Fabout. Vi vil gjerne endre det til http: // localhost: 8888 / hei / web / nettsted / om.

De config underkatalog inkluderer miljøkonfigurasjoner for web- og konsollprogrammene dine, samt fremtidige databaseinnstillinger. Redigere /config/web.php å legge til urlManagement til gjeldende webapplikasjon. Legg til følgende urlManager delen i komponentarrangementet:

 'components' => [// ... 'urlManager' => ['showScriptName' => false, 'enablePrettyUrl' => true], // ... 'request' => [

Deretter oppretter du en .htaccess fil innenfor / web hvor den primære index.php Filen eksisterer:

RewriteEngine on # Hvis en katalog eller en fil eksisterer, bruk den direkte RewriteCond% REQUEST_FILENAME! -F RewriteCond% REQUEST_FILENAME! -D # Ellers videresend den til index.php RewriteRule. index.php

Forsikre mod_rewrite kjører lokalt på MAMP; Hvis ikke, sjekk ut denne Stack Overflow-guiden.

I nettleseren din, besøk denne URL-adressen: http: // localhost: 8888 / hei / web / side / om. Du bør se Yii-programmet Om side og klikke på andre menyalternativer skal opprette vakre nettadresser.

Bygg Say Hello World! Handling

Deretter legger vi til en kontrolleringshandling som heter Si å gjenta en målmelding av vårt valg. I /controllers/SiteController.php, legg til følgende handling:

offentlig funksjon actionSay ($ target = 'World') return $ this-> render ('say', ['target' => $ target]);  

Dette vil se etter en URL-parameter kalt mål for å ekko til skjermen. Hvis det ikke er noen mål parameter, vil det si gjenta "World". I Yii er handlinger definert som en metode kalt med prefikset "handling" etterfulgt av handlingsnavnet. I dette SiteController klasse, bruker vi offentlig funksjon actionSay. Yii bruker prefikset "handling" for å skille mellom handlinger og metoder fra andre metoder.

Standard oppførsel av gjengivelsesmetoden vil se etter en fil i visninger / ControllerID / ViewName.php. Så, i / Synspunkter / site /, lage en say.php se fil:

 

Hallo

Velkommen til ditt Yii2 demonstrasjonsprogram.

Dette er malevisningsfilen for å gjenta statisk HTML-kode h1 med Hallo etterfulgt av målvariabelen. Merk: Vi koder målvariabelen for å sikre URL-parameterargumentet fra ondsinnet kode.

Hvis du besøker URLen, http: // localhost: 8888 / hei / web / site / say? Target = Tuts% 20Readers, du bør se dette:

Det er et veldig grunnleggende eksempel på Yii2 Model View Controller. Du kan lese gjennom en mer grundig beskrivelse av Hello World-demonstrasjonen og Yii2 MVC her.

La oss nå sette opp applikasjonen vår med GitHub og distribuere den til en produksjonsserver. 

Konfigurere ditt eksterne hosting miljø

Den grunnleggende Yii-applikasjonen skal løpe fint ut av boksen med Apache eller en Nginx, jeg skal gi instruksjoner for Apache, og du kan finne instruksjoner for Nginx her.

Opprett et lager på GitHub

Når jeg har opprettet en Yii-applikasjonsmal, lager jeg et arkiv på Github:

Merk: Det er litt enklere å først kopiere og lime inn Yii2. Gitignore fra GitHub til din lokale ~ / Nettsteder / hallo / .gitignore-fil i stedet for å opprette nettstedet med det eksternt og må fusjonere det lokalt, men enten er tilnærmingen bra.

Jeg har brukt Mac OS X GitHub-appen oftere, men du kan også bruke kommandolinjen til å initialisere depotet. Nedenfor følger jeg instruksjonene for å legge til et eksisterende prosjekt for GitHub ved hjelp av kommandolinjen (erstatt "youraccount" med ditt GitHub-kontonavn):

cd ~ / Nettsteder / hallo git init git commit -m "første forpliktelse til hei verden for yii2" git fjern legge til opphav [email protected]: youraccount / hello.git git push -u opprinnelses master

Konfigurer et Apache-område på serveren din

Hvis du ikke allerede har en LAMP-server eller en sky-instans, følger du min generiske Ubuntu-installasjonsanvisning for å komme i gang. Når du har din IP-adresse, endrer du DNS-postene dine for å få et rekordpunkt til serveren din. 

yourdomain.com A 192.161.234.17

Deretter logger du deg på serveren din enten via IP-adresse eller domenenavn:

ssh [email protected]

Oppdater konfigurasjonen, installer Git, aktiver mod_rewrite for Apache og mcrypt for PHP:

sudo apt-få oppdatering sudo apt-få oppgradering sudo a2enmod omskrive php5enmod mcrypt

Konfigurer GitHub Access på den eksterne serveren

Nå skal vi sette opp en bruker for å trekke kode fra Github som kan betjenes av Apache. Først installerer du git på serveren din.

sudo apt-get install git 

Deretter skal vi opprette en gruppe for www, legge til www-data og GitHub-brukere til det og gi det eierskap til våre webkataloger.

adduser github addgroup www adduser github www adduser www-data www chown -R: www / var / www chmod + s -R / var / www chmod -vR g + w / var / www /

Deretter oppretter vi en nøkkel for brukeren som vi deler med GitHub for å holde kode i synkronisering:

su github ssh-keygen -t rsa -C "[email protected]" exit cat /home/github/.ssh/id_rsa.pub

Du ser noe slikt som du må kopiere og lime inn på GitHub.com:

Gå til Innstillinger-siden for GitH soundub-arkivet under nøkler, og legg til denne nøkkelen i depotet ditt:

Når du legger til det, ser du det som er oppført her:

Til slutt kan du klone treet til produksjonsserveren din:

git klone [email protected]: youraccount / hello.git / var / www / hei

Hvis du har GitHub-tilgang er riktig konfigurert, bør den se slik ut (hvis ikke, vurder dette):

Når du utvider kodebase med denne opplæringsserien og trykker oppdateringer fra din lokale maskin, kan du synkronisere dem på fjernproduksjonsserveren med git pull. Dette er enklere enn å trekke ned en tarball- eller synkroniseringskode manuelt - og vil bli mer nyttig siden denne opplæringsserien fortsetter med senere moduler.

Opprett Apache Site Configuration

Opprett en konfigurasjonsfil for Apache-siden:

nano /etc/apache2/sites-available/hello.conf

Tilpass denne konfigurasjonen for domenenavnet ditt:

 Servernavn yourdomain.com # Sett dokumentrot for å være "basic / web" DocumentRoot "/ var / www / hello / web"  # bruk mod_rewrite for ganske nettadressestøtte RewriteEngine on # Hvis en katalog eller en fil eksisterer, bruk forespørselen direkte RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Ellers videresend forespørselen til index.php RewriteRule. index.php   

Aktiver nettstedet ditt:

a2ensite hello.conf a2dissite 000-default.conf service apache2 reload

Besøk http://yourdomain.com/site/say?target=World! og du bør se at søknaden din kjører på domenet ditt uten Yii2 feilsøkingsverktøylinjen nederst slik:

Gratulerer! Vi er nå klar til å utforske mer sofistikerte funksjoner i Yii2. Hvis du vil vite når neste Yii2 opplæring kommer, følg @tutspluscode eller @reifman på Twitter eller sjekk forfattersiden min. Min forfatterside vil inkludere alle artiklene fra denne serien så snart de er publisert.

Hvis du har spørsmål eller rettelser på denne opplæringen, vennligst legg dem inn i kommentarene.

Relaterte linker

  • Yii Framework Website
  • Introduksjon til Yii Framework (Tuts +) 
  • Andre gratis og åpen kildekode Yii programmeringseksempler av forfatteren
  • Nyttige PHP-skript på Envato Market