Hur man programmerar med Yii2 Komma igång

Vad du ska skapa

Om du frågar, "Vad är Yii?" kolla in min tidigare handledning: Introduktion till Yii Framework, som granskar fördelarna med Yii och innehåller en översikt över vad som är nytt i Yii 2.0, släppt 12 oktober 2014. 

Denna handledning kommer att gå dig genom att installera Yii 2.0, konfigurera din lokala utvecklingsmiljö, bygga ett enkelt Hello World-program, konfigurera din fjärranslutna produktionsmiljö för att värd och distribuera din kod från ett GitHub-arkiv.

Installera Yii 2.0

Dokumentation

Här hittar du detaljerade installationsanvisningar. Jag går igenom grunderna för en typisk utvecklingsmiljö för Mac OS X. Yii 2.0 har en slutgiltig guide (PDF) och en klassreferens som täcker alla detaljer i Yii. ca

Installera kompositör

Yii2 kräver Composer, en populär dependence manager för PHP. Om du inte redan har Composer installerat gör du följande:

curl -s http://getcomposer.org/installer | php mv kompositör.phar / usr / local / bin / composer

Installera Yii2

Använd sedan Kompositör för att installera Yii2. Installationsbegäran kräver att du använder ditt eget Github-kontouppgifter registrera dig om du inte har ett konto.

Låt oss kalla det här första projektet, "hej":

cd ~ / Sites kompositör globalt kräver "fxp / composer-asset-plugin: 1.0.0-beta2" kompositör skapa -projekt --prefer-dist yiisoft / yii2-app-basic hej

Yii2 ger två olika installationsmallar beroende på vilken typ av applikation du utvecklar: grundläggande och avancerat. För den här handledningen använder vi den grundläggande applikationen som är installerad som standard. Den avancerade applikationsmallen ger en front-end, back-end och konsol åtkomstpunkter för en mer avancerad webbapplikation, som ett WordPress-blogg, det är administrativ kontrollpanel och bakgrunds-cron-uppgifter.

Ställa in din lokala utvecklingsmiljö

Jag använder gratis, öppen källkod MAMP för OS X för min LAMP-utveckling. Se till att MAMP körs och dess webb- och databasservrar är aktiva. Skapa sedan en symlink för MAMP till din webbplatser app katalog:

 cd / applikationer / MAMP / htdocs ln -s ~ / webbplatser / hej / / applikationer / MAMP / htdocs / hej

Besök sedan http: // localhost: 8888 / hej / web. Du bör se Yii2 grundläggande applikationsmallen som körs med Bootstrap 3.x. 


Den sidan kommer sannolikt att excitera Yii 1.1-utvecklare som inte har förkonfigurerat stöd för den senaste versionen av Bootstrap, den enastående öppen källkod-responsiv CSS-ram som tar över ganska lite av webben.

Yii Application Architecture

En av de viktigaste funktionerna i Yii Framework är att det ger en modellvisningskontroll för PHP. Detta ger inte bara en mer strukturerad programmeringsmiljö och enklare att förstå kod, det förenklar ett antal saker som är svåra att göra i PHP, som säkerhet och automatisk kodgenerering. Det gör också vår kod lättare att utvidga och mer återanvändbar.

Med en Yii-applikation riktar vi all trafik till en enda fil: /web/index.php fil. Den här inbyggda filen laddar Yii, eventuella beroenden och kör sedan din ansökan.

springa(); 

Som standard är indexmetoden i /controllers/SiteController.php:

public function actionIndex () return $ this-> render ('index'); 

Generellt är styrenheterna fulla av metoder, men med minimal kod som ovan. Controllers hanterar åtkomst, hävstångsmodeller och gör synpunkter. Huvuddelen av intelligens ska byggas in i dina modeller och åsikterna ska generellt producera relativt enkla malloperationer.

Som standard kommer Yii att göra /views/layouts/main.php runt din indexvy i /views/site/index.php. De main.php Layouten ger HTML- och CSS-strukturen till sidan, t.ex. verktygsfältet och innehållsområdet. Inuti main.php, Du får se ett kort samtal till innehållet:

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

Den där $ innehåll variabel kommer att ersättas med den genererade koden från /views/site/index.php, som för närvarande är statisk HTML-kod som genererar Grattis! sidan som visas ovan.

Bygga Hello World!

Slår på vackra webbadresser

Låt oss först aktivera Yii2s vackra webbadresser med mod_rewrite. På Yii hemsida, om du klickar på Handla om menyalternativet kommer webbadressen att vara något som http: // localhost: 8888 / hej / web / index.php? r = site% 2Fabout. Vi skulle vilja ändra det till http: // localhost: 8888 / hej / web / site / about.

De config Underkatalog innehåller miljökonfigurationer för dina webb- och konsolprogram samt de framtida databasinställningarna. Redigera /config/web.php tillägga urlManagement till den aktuella webbapplikationen. Lägg till följande urlManager sektion inom komponenterna array:

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

Skapa sedan en .htaccess fil inom /webb var den primära index.php fil existerar:

RewriteEngine on # Om en katalog eller en fil finns, använd den direkt RewriteCond% REQUEST_FILENAME! -F RewriteCond% REQUEST_FILENAME! -D # Annars vidarebefordra den till index.php RewriteRule. index.php

Se till mod_rewrite körs lokalt på MAMP; Om inte, kolla in denna Stack Overflow guide.

I din webbläsare besöker du den här webbadressen: http: // localhost: 8888 / hej / web / site / about. Du bör se Yii-applikationen Om sidan och klicka på andra menyalternativ ska hämta söta webbadresser.

Bygga Say Hello World! Verkan

Därefter lägger vi till en kontrollerad åtgärd som heter Säga att upprepa ett målmeddelande som vi väljer. I /controllers/SiteController.php, lägg till följande åtgärd:

public function actionSay ($ target = 'World') return $ this-> render ('say', ['target' => $ mål]);  

Detta kommer att leta efter en URL-parameter som kallas målet att echo till skärmen. Om det inte finns någon målparameter, kommer det att säga repetera "World". I Yii definieras åtgärder som en metod som heter prefixet "action" följt av åtgärdsnamnet. I denna SiteController klass, vi använder public function actionSay. Yii använder prefixet "action" för att differentiera åtgärdsmetoder från andra metoder.

Standardbeteendet för renderingsmetoden kommer att leta efter en fil i views / ControllerID / ViewName.php. Så i / Views / site /, skapa en say.php visa fil:

 

Hej

Välkommen till din Yii2 demonstration ansökan.

Det här är mallvyfilen för att upprepa statisk HTML-tagg h1 med Hej följd av målvariabeln. Obs! Vi kodar målvariabeln för att säkra URL-parameterargumentet från skadlig kod.

Om du besöker webbadressen http: // localhost: 8888 / hej / web / site / say? Target = Tuts% 20Readers, du borde se detta:

Det är ett mycket grundläggande exempel på Yii2 Model View Controller. Du kan läsa igenom en mer noggrann beskrivning av Hello World-demonstrationen och Yii2 MVC här.

Nu, låt oss ställa in vår ansökan med GitHub och distribuera den till en produktionsserver. 

Konfigurera din fjärranslutna värdmiljö

Den grundläggande Yii-applikationen ska fungera bra ut ur rutan med Apache eller en Nginx, jag ska ge instruktioner för Apache och du kan hitta instruktioner för Nginx här.

Skapa ett arkiv på GitHub

När jag har skapat en Yii-programmall skapar jag ett förråd på Github:

Notera: Det är lite enklare att börja med kopiera och klistra in Yii2. Gitignore från GitHub till din lokala ~ / Sites / hej / .gitignore-fil istället för att skapa webbplatsen med den på distans och måste slå den samman lokalt, men antingen är det bra.

Jag har använt Mac OS X GitHub-appen oftare, men du kan också använda kommandoraden för att initialisera förvaret. Nedan följer jag anvisningarna för att lägga till ett befintligt projekt till GitHub med kommandoraden (ersätt "youraccount" med ditt GitHub-kontonamn):

cd ~ / webbplatser / hej git init git commit -m "första begå av hej världen för yii2" git fjärr lägg till ursprung [email protected]: youraccount / hello.git git push -u ursprung master

Konfigurera en Apache-webbplats på din server

Om du inte redan har en LAMP-server eller en cloud-instans följer du mina generiska Ubuntu installationsinstruktioner för att komma igång. När du har din IP-adress, ändra dina DNS-poster för att få en A-post till din server. 

yourdomain.com A 192.161.234.17

Logga sedan in på din server antingen via IP-adress eller domännamn:

ssh [email protected]

Uppdatera konfigurationen, installera Git, aktivera mod_rewrite för Apache och mcrypt för PHP:

sudo apt-få uppdatering sudo apt-få uppgradering sudo a2enmod skriva om php5enmod mcrypt

Konfigurera GitHub Access på fjärrservern

Nu ställer vi upp en användare för att dra kod från Github som kan serveras av Apache. Först installera git på din server.

sudo apt-get install git 

Då skapar vi en grupp för www, lägger till www-data och GitHub-användare till det och ger det ägande av våra webbkataloger.

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 /

Därefter skapar vi en nyckel för användaren som vi delar med GitHub för att hålla kod synkroniserad:

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

Du ser något som detta, vilket du behöver kopiera och klistra in på GitHub.com:

Besök sidan Inställningar för ditt GitH soundub-lager under nycklar och lägg till den här nyckeln i ditt förråd:

När du har lagt till det ser du det som listas här:

Slutligen kan du klona trädet till din produktionsserver:

git klon [email protected]: youraccount / hej.git / var / www / hej

Om du är GitHub-åtkomst är korrekt konfigurerad ska den se ut så här (om inte, granska det här):

När du utökar kodbasen med den här handledningsserien och trycker uppdateringar från din lokala maskin, kan du synkronisera dem på fjärrproduktionsservern med git-dragning. Det här är enklare än att manuellt dra ner en tarball- eller synkroniseringskod - och blir mer användbar eftersom den här tutorialserien fortsätter med senare moduler.

Skapa Apache Site Configuration

Skapa en konfigurationsfil för Apache-webbplatsen:

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

Anpassa den här konfigurationen för ditt domännamn:

 Servernamn yourdomain.com # Ställ dokumentrot för att vara "basic / web" DocumentRoot "/ var / www / hello / web"  # använd mod_rewrite för ganska URL-stöd RewriteEngine on # Om en katalog eller en fil finns, använd begäran direkt RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Annars vidarebefordra begäran till index.php RewriteRule. index.php   

Aktivera din webbplats:

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

Besök http://yourdomain.com/site/say?target=World! och du borde se din applikation köra på din domän utan Yii2-felsökningsverktygsfältet längst ned så här:

grattis! Vi är nu redo att utforska mer sofistikerade funktioner i Yii2. Om du vill veta när nästa Yii2 handledning kommer, följ @tutspluscode eller @reifman på Twitter eller kolla min författarsida. Min författarsida kommer att inkludera alla artiklar från den här serien så snart som de publiceras.

Om du har några frågor eller korrigeringar på denna handledning, vänligen skicka in dem i kommentarerna.

relaterade länkar

  • Yii Framework Website
  • Introduktion till Yii Framework (Tuts +) 
  • Andra Gratis och Open Source Yii Programming Exempel av författaren
  • Användbara PHP-skript på Envato Market