Hoe te programmeren met Yii2 Aan de slag

Wat je gaat creëren

Als je vraagt: "Wat is Yii?" bekijk mijn eerdere zelfstudie: Inleiding tot het Yii Framework, waarin de voordelen van Yii worden besproken en een overzicht wordt gegeven van wat er nieuw is in Yii 2.0, uitgebracht op 12 oktober 2014. 

Deze tutorial begeleidt je bij het installeren van Yii 2.0, het opzetten van je lokale ontwikkelomgeving, het bouwen van een eenvoudige Hello World-applicatie, het opzetten van je productieomgeving op afstand voor het hosten en implementeren van je code vanuit een GitHub-repository.

Yii 2.0 installeren

Documentatie

U kunt hier gedetailleerde installatie-instructies vinden; Ik zal je door de basis leiden voor een typische Mac OS X-ontwikkelomgeving. Yii 2.0 heeft een definitieve gids (PDF) en een klasseverwijzing die elk detail van Yii beslaat. ca

Composer installeren

Yii2 vereist Composer, een populaire afhankelijkheidsmanager voor PHP. Als Composer nog niet is geïnstalleerd, doet u het volgende:

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

Yii2 installeren

Gebruik vervolgens Composer om Yii2 te installeren. Voor het installatie-verzoek moet u uw eigen Github-accountgegevens gebruiken; meld u aan als u geen account hebt.

Laten we dit eerste project "hallo" noemen:

cd ~ / Sites composer global vereisen "fxp / composer-asset-plugin: 1.0.0-beta2" composer create-project --prefer-dist yiisoft / yii2-app-basic hallo

Yii2 biedt twee verschillende installatiesjablonen, afhankelijk van het type toepassing dat u aan het ontwikkelen bent: standaard en geavanceerd. Voor deze zelfstudie gebruiken we de basistoepassing die standaard is geïnstalleerd. De geavanceerde toepassingssjabloon biedt een front-end, back-end en console toegangspunten voor een geavanceerdere webapplicatie, zoals een WordPress-blog, het is administratief dashboard en achtergrond cron-taken.

Uw lokale ontwikkelingsomgeving instellen

Ik gebruik gratis, open source MAMP voor OS X voor mijn LAMP-ontwikkeling. Controleer of MAMP actief is en of de web- en databaseservers actief zijn. Maak vervolgens een symbolische link voor MAMP naar uw sites app directory:

 cd / Toepassingen / MAMP / htdocs ln -s ~ / Sites / hallo / / Toepassingen / MAMP / htdocs / hallo

Ga vervolgens naar http: // localhost: 8888 / hallo / web. De basisstroomsjabloon van Yii2 zou moeten worden weergegeven met Bootstrap 3.x. 


Op die pagina zullen waarschijnlijk Yii 1.1-ontwikkelaars prikkelen die nog geen vooraf geconfigureerde ondersteuning hebben gehad voor de nieuwste versie van Bootstrap, het uitstekende open source responsieve CSS-framework dat nogal wat internet is overgenomen.

Yii-toepassingsarchitectuur

Een van de belangrijkste kenmerken van het Yii Framework is dat het een Model View Controller voor PHP biedt. Dit biedt niet alleen een meer gestructureerde programmeeromgeving en eenvoudiger te begrijpen code, het vereenvoudigt een aantal dingen die moeilijk zijn om te doen in PHP, zoals beveiliging en geautomatiseerde codegeneratie. Het maakt onze code ook gemakkelijker uit te breiden en meer herbruikbaar.

Met een Yii-applicatie leiden we al het verkeer naar een enkel bestand: /web/index.php het dossier. Dit ingebouwde bestand laadt Yii, eventuele afhankelijkheden en voert vervolgens uw toepassing uit.

rennen(); 

Standaard is dit de indexmethode in /controllers/SiteController.php:

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

Over het algemeen zijn controllers vol met methoden, maar met minimale code zoals hierboven. Controllers beheren de toegang, gebruiken modellen en maken weergaven. Het grootste deel van de intelligentie moet in uw modellen worden ingebouwd en de views moeten over het algemeen relatief eenvoudige sjabloonbewerkingen produceren.

Standaard wordt Yii weergegeven /views/layouts/main.php rond je indexweergave in /views/site/index.php. De main.php lay-out verschaft de HTML- en CSS-structuur aan de pagina, b.v. het werkbalk- en inhoudsgebied. Binnen main.php, je ziet een korte oproep naar de inhoud:

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

Dat $ inhoud variabele wordt vervangen door de gegenereerde code van /views/site/index.php, welke momenteel statische HTML-code is die de. genereert Gefeliciteerd! pagina hierboven weergegeven.

Hallo wereld bouwen!

Mooie URL's inschakelen

Laten we eerst de mooie URL's van Yii2 inschakelen met mod_rewrite. Op de startpagina van Yii, als u op klikt Wat betreft menu-optie, zal de URL iets zijn als http: // localhost: 8888 / hello / web / index.php? r = site% 2Fabout. We willen dat veranderen naar http: // localhost: 8888 / hello / web / site / about.

De config subdirectory bevat omgevingsconfiguraties voor uw web- en consoletoepassingen, evenals de toekomstige database-instellingen. Bewerk /config/web.php toevoegen urlManagement naar de huidige webapplicatie. Voeg het volgende toe urlManager sectie binnen de componentenreeks:

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

Maak vervolgens een .htaccess bestand binnen /web waar de primaire index.php Bestand bestaat:

RewriteEngine op # Als er een directory of een bestand bestaat, gebruik het dan direct RewriteCond% REQUEST_FILENAME! -F RewriteCond% REQUEST_FILENAME! -D # Stuur het anders door naar index.php RewriteRule. index.php

Zorg ervoor dat mod_rewrite wordt lokaal uitgevoerd op MAMP; zo niet, bekijk dan deze Stack Overflow-gids.

Ga in je browser naar deze URL: http: // localhost: 8888 / hello / web / site / about. Je zou de Yii-applicatie About-pagina moeten zien en op andere menu-opties moeten klikken om mooie URL's te krijgen.

Bouw de Say Hello World! Actie

Vervolgens voegen we een controller-actie toe met de naam Zeggen om een ​​doelbericht van onze keuze te herhalen. In /controllers/SiteController.php, voeg de volgende actie toe:

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

Hiermee wordt gezocht naar een URL-parameter met de naam doel om naar het scherm te echoën. Als er geen doelparameter is, wordt Herhaal "Wereld" vermeld. In Yii worden acties gedefinieerd als een methode met de naam "actie", gevolgd door de naam van de actie. In deze SiteController klas, gebruiken we openbare functie actionSay. Yii gebruikt de prefix "actie" om actiemethoden te onderscheiden van andere methoden.

Het standaardgedrag van de weergavemethode zoekt naar een bestand in views / ControllerID / ViewName.php. Dus, in / Views / site /, Maak een say.php bestand bekijken:

 

Hallo

Welkom bij uw Yii2-demonstratie-applicatie.

Dit is het sjabloonweergavebestand om een ​​statische HTML-tag te herhalen h1 met Hallo gevolgd door de doelvariabele. Opmerking: we coderen de doelvariabele om het URL-parameterargument te beveiligen tegen schadelijke code.

Als u de URL bezoekt, http: // localhost: 8888 / hello / web / site / say? Target = Tuts% 20Readers, zou u dit moeten zien:

Dat is een heel eenvoudig voorbeeld van de Yii2 Model View Controller. Je kunt hier een meer grondige beschrijving lezen van de Hello World-demonstratie en Yii2 MVC.

Laten we nu onze applicatie instellen met GitHub en deze implementeren op een productieserver. 

Uw Remote Hosting-omgeving instellen

De basis-Yii-applicatie zou prima moeten werken met Apache of een Nginx, ik zal instructies voor Apache geven en je kunt instructies voor Nginx hier vinden.

Maak een repository op GitHub

Zodra ik een Yii-toepassingssjabloon heb opgezet, maak ik een repository bij Github:

Notitie: In eerste instantie is het een beetje eenvoudiger om het te kopiëren en te plakken Yii2 .gitignore van GitHub naar uw lokale ~ / Sites / hello / .gitignore-bestand in plaats van dat u de site ermee op afstand maakt en deze lokaal moet samenvoegen, maar beide benaderingen zijn prima.

Ik gebruik de Mac OS X GitHub-app vaker, maar je kunt ook de opdrachtregel gebruiken om de repository te initialiseren. Hieronder volg ik de instructies voor het toevoegen van een bestaand project aan GitHub met behulp van de opdrachtregel (vervang "youraccount" door uw GitHub-accountnaam):

cd ~ / Sites / hallo git init git commit -m "eerste commit van hallo wereld voor yii2" git remote add origin [email protected]: youraccount / hello.git git push -u originant

Configureer een Apache-site op uw server

Als u nog geen LAMP-server of cloud-instantie hebt, volgt u mijn algemene Ubuntu-installatie-instructies om aan de slag te gaan. Zodra u uw IP-adres hebt, past u uw DNS-records aan om een ​​A-recordpunt te hebben voor uw server. 

yourdomain.com A 192.161.234.17

Meld u dan aan op uw server via IP-adres of domeinnaam:

ssh [email protected]

Werk de configuratie bij, installeer Git, schakel in mod_rewrite voor Apache en mcrypt voor PHP:

sudo apt-get update sudo apt-get upgrade sudo a2enmod herschrijven php5enmod mcrypt

Configureer GitHub Access op de externe server

Nu gaan we een gebruiker instellen voor het ophalen van code uit Github die kan worden gebruikt door Apache. Installeer eerst git op uw server.

sudo apt-get install git 

Vervolgens maken we een groep voor www, voegen we www-data en GitHub-gebruikers eraan toe en verlenen we het eigendom van onze webdirectory's.

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 /

Vervolgens maken we een sleutel voor de gebruiker die we delen met GitHub om de code gesynchroniseerd te houden:

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

Je ziet zoiets als dit, dat je moet kopiëren en plakken naar GitHub.com:

Ga naar de pagina Instellingen voor je GitH-soundubrepository onder de sleutels en voeg deze sleutel toe aan je repository:

Nadat u deze heeft toegevoegd, wordt deze hier weergegeven:

Ten slotte kunt u de boom klonen naar uw productieserver:

git clone [email protected]: youraccount / hello.git / var / www / hallo

Als je GitHub-toegang correct is geconfigureerd, zou dit er zo uit moeten zien (als dit niet het geval is, bekijk dit dan):

Terwijl je de codebase met deze tutorialserie uitbreidt en updates van je lokale computer pusht, kun je ze met git pull synchroniseren op je externe productieserver. Dit is eenvoudiger dan het handmatig naar beneden halen van een tarball- of synchronisatiecode - en zal nuttiger worden naarmate deze tutorialserie doorgaat met latere modules.

Maak de Apache Site-configuratie

Maak een Apache-siteconfiguratiebestand:

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

Pas deze configuratie aan voor uw domeinnaam:

 Servernaam yourdomain.com # Stel document root in als "basic / web" DocumentRoot "/ var / www / hello / web"  # gebruik mod_rewrite voor mooie URL-ondersteuning RewriteEngine op # Als een map of bestand bestaat, gebruik dan de aanvraag direct RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Stuur het verzoek door naar index.php RewriteRule. index.php   

Schakel uw site in:

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

Bezoek http://yourdomain.com/site/say?target=World! en je zou je applicatie in je domein moeten zien draaien zonder de Yii2 debug toolbar onderaan deze:

Gefeliciteerd! We zijn nu klaar om meer geavanceerde functies in Yii2 te verkennen. Als je wilt weten wanneer de volgende Yii2-zelfstudie aankomt, volg dan @tutspluscode of @reifman op Twitter of controleer mijn auteurspagina. Op mijn auteurspagina staan ​​alle artikelen uit deze serie zodra ze worden gepubliceerd.

Als je vragen of correcties hebt over deze tutorial, plaats deze dan in de comments.

Gerelateerde Links

  • Yii Framework Website
  • Introductie van het Yii Framework (Tuts +) 
  • Andere gratis en open source Yii programmeervoorbeelden door de auteur
  • Handige PHP-scripts op Envato Market