Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Entwicklungsframework Yii Framework-Tutorial (4) Beispiel für ein Hangman-Wortratespiel
Mit dem vorherigen „Hello, World“-Beispiel und der Einführung in die Grundlagen von Yii Framework-Webanwendungen können wir mit der Einführung einer einfachen, aber relativ vollständigen Webanwendung beginnen – Hangman (Ratespiel). Dieses Beispiel wird mit Yii Development geliefert Paket freigegeben. Anhand dieses Beispiels können Sie die grundlegenden Schritte der Entwicklung von Yii-Anwendungen verstehen.
Apropos „Hangman“: Es erinnert mich an das „Ratespiel“, das ich Ende der 1980er Jahre auf dem CPC464-Computer gespielt habe. Henker, jedes Mal habe ich falsch geraten. Einmal wurde ein Bösewicht einen Schritt näher an den Galgen gebracht. DOS war damals gerade herausgekommen :-).
Um eine Webanwendung zu entwickeln, ist der erste Schritt die Durchführung einer Anforderungsanalyse. Diese ist nicht in diesem Tutorial enthalten, aber der Vollständigkeit halber sind unten die Regeln des „Ratespiels“ aufgeführt:
Rate das Wort Das Spiel (englisch: Hangman, was „Gehängter“ bedeutet) ist ein Spiel für zwei Spieler. Ein Spieler denkt sich ein Wort aus und der andere Spieler versucht, jeden Buchstaben des Wortes zu erraten, an das der Spieler denkt.
Das zu erratende Wort wird durch eine Spalte aus horizontalen Linien dargestellt, die den Spielern mitteilen, wie viele Buchstaben das Wort hat. Wenn der Ratespieler einen der Buchstaben richtig errät, muss der andere Spieler diesen Buchstaben an allen Stellen schreiben, an denen er vorkommt. Wenn der erratene Buchstabe nicht im Wort vorkommt, zeichnet der andere Spieler einen der Striche der Hängepuppe. Das Spiel endet in den folgenden Situationen:
„Ich möchte das T-Wort.“ „Ja, auf dem achten und elften Platz.“ das Wort Der Spieler hat alle Buchstaben erraten oder das ganze Wort erraten
Der andere Spieler hat das vollständige Bild gezeichnet:
Das heutige Beispiel zeichnet nicht „Der Gehängte“, erraten Sie es richtig Wenn Sie falsch raten, wird „Sie gewinnen“ angezeigt, wenn Sie falsch raten, wird „Sie verlieren“ angezeigt. Daher können wir vier Seiten entwerfen:
Diese vier Seiten entsprechen dem Yii-Framework als vier Ansichten, die jeweils als Spielen, Raten, Gewinnen, Verlieren bezeichnet werden können Jede Seite Zeigt den Titel „Hangman Game“ an, sodass Sie eine „MasterPage“ entwerfen und in Yii zu einer Layoutvorlage für vier Ansichten zum Teilen werden können. Die Yii-Anwendung übernimmt das MVC-Entwurfsmuster, sodass wir einen Controller->GameController für vier Ansichten entwerfen können.
Im vorherigen Tutorial wurde gesagt, dass die Yii-Anwendung die Standardverzeichnisstruktur verwendet, um verschiedene Teile der Anwendung zu speichern. Verwenden Sie die von Yii bereitgestellten Tools, um ein Standardprojektverzeichnis hinzuzufügen. Ich persönlich bevorzuge es jedoch, jedes Verzeichnis selbst zu erstellen, sodass die Verzeichnisstruktur des Projekts basierend auf den oben genannten Anforderungen und dem Schnittstellendesign wie folgt erstellt werden kann:
Die Die erstellte GameController.php wird im Verzeichnis protected/controller abgelegt.
Die vier erstellten Ansichten „guest.php“, „lose.php“, „play.php“ und „win.php“ werden im Verzeichnis protected/views/game abgelegt. Der Verzeichnisname game entspricht dem von GameController erstellten freigegebenen Layout.
und wird im Verzeichnis protected/views/layout abgelegt. Der Standardlayoutname lautet main.php
Anwendungskonfigurationsdatei Platzieren Sie es in protected/config. Die Standardkonfigurationsdatei ist main.php
Das Anwendungseintragsskript ist index.php
Außerdem ist die Textdatei zum Erraten von Wörtern word.txt
1. Werfen wir zunächst einen Blick auf die Konfigurationsdatei protected/config/main.php
Alle beschreibbaren Attribute der CWebApplication-Anwendung können über definiert werden In der Konfigurationsdatei sehen wir, dass die Konfigurationsdatei den Namen der Anwendung als „Hangman Game“ definiert und dann den Standard-Controllernamen der Webanwendung in „Game“ ändert, was GameController entspricht Der Controllername ist SiteController, daher wird View im Verzeichnis protected/views/site gespeichert. Darüber hinaus öffnet diese Yii-Anwendung die URLManager-Komponente. Die Funktion dieser Komponente wird hauptsächlich zum Definieren des Formats von URLs verwendet, auf die Benutzer zugreifen können (Routing-Format).return array( 'name'=>'Hangman Game', 'defaultController'=>'game', 'components'=>array( 'urlManager'=>array( 'urlFormat'=>'path', 'rules'=>array( 'game/guess/'=>'game/guess',),), ),);
2. Mit dieser Konfigurationsdatei können Sie sie im Eingabeskript index.php jeder Yii-Anwendung verwenden. In den meisten Fällen handelt es sich um Kopieren und Einfügen
3. Definieren Sie dann die von View verwendete Layoutdatei „protected/views/layout/main.php“. Die Anwendung kann das von View verwendete Layout ändern Ich möchte nur den Standardlayoutnamen main. Das Layout ist im Grunde eine HTML-Datei, in der der Inhalt als Platzhalter der Ansicht, also bei der Anzeige einer bestimmten Ansicht, wie z. B. play.php, verwendet wird von play.php, um es zu ersetzen. Dadurch wird eine ähnliche Funktion wie „MasterPage“ realisiert.4. Sie können die vier Ansichten einzeln definieren. Sie sind hier nicht aufgeführt:
Sie können sehen, dass es sich im Wesentlichen um HTML handelt und CHtml eine vom Yii-Framework unterstützte Hilfsklasse ist, die beim Generieren von HTML-Code hilft. Hangman ist relativ einfach, verwendet also kein separates Modell, sondern übergibt Parameter per Render-Push.
Sie müssen CController::render() aufrufen, indem Sie den Namen der Ansicht übergeben. Diese Methode sucht nach der entsprechenden Ansichtsdatei im Verzeichnis protected/views/ControllerID.
Innerhalb des Ansichtsskripts können wir über $this-> auf die Controller-Instanz zugreifen ; propertyName-Methode zum Abrufen einer beliebigen Eigenschaft des Controllers.
Wir können auch die folgende Push-Methode verwenden, um Daten an die Ansicht zu übergeben:
$this->render('edit', array (
'var1'=>$value1,
'var2'=>$value2,
));
In der obigen Methode die render()-Methode Extrahiert den zweiten Parameter des Arrays in die Variable. Das Ergebnis ist, dass wir im Ansichtsskript direkt auf die Variablen $var1 und $var2 zugreifen können.
5 Nachdem Sie das Layout und die Ansicht definiert haben Schreiben Sie GameController,
Im Allgemeinen ist die Standardaktion durch $defaultAction geändert. Wenn in diesem Beispiel die URL http://127.0.0.1:8888/yii/demos/hangman/
lautet, dann verwenden Sie http://127.0.0.1:8888/yii/demos/hangman/index.php und verwenden Sie http: //127.0 .0.1:8888/yii/demos/hangman/index.php?game/play hat den gleichen Effekt. Der Standard-Controller ist GameController und die Standardaktion von GameController ist Spielen.
Aktion (Aktion) kann als Methode definiert werden, deren Name das Wort Aktion ist. Hangman definiert drei Aktionen: actionPlay, actionGuess, actionGiveup, GameController, andere Methoden und Attribute sowie generierte Wörter. Die spezifische Spiellogik hat wenig mit dem Yii-Framework zu tun und wird nicht vorgestellt.
6. Schauen Sie sich zunächst die Standard-PlayAction an. Dies ist die vom Benutzer aufgerufene Standardmethode, das heißt, wenn die Benutzergruppenadressleiste http://127.0.0.1:8888/yii/demos eingibt /hangman / Von index.php aufgerufene Aktion (oder http://127.0.0.1:8888/yii/demos/hangman/index.php?game/play).
Diese Methode definiert die drei Schwierigkeitsgrade des Spiels, $levels, mit zwei Zweigen. Wenn kein Schwierigkeitsgrad ausgewählt ist, $this->render(' play'. ,$params), zeigen Sie die Wiedergabeseite an, verschieben Sie $params (Array) in die entsprechende Ansicht, protected/views/play.php, siehe Definition von Ansicht oben:
View verwendet Radiobutton, um die durch $levels definierte Liste anzuzeigen.
Wenn der Benutzer den Schwierigkeitsgrad auswählt, speichern Sie den Level, die Wörter usw. in den vom GameController definierten Attributen, z. B. Wort, Level usw. GameController und CController sind ebenfalls Unterklassen von CComponent und unterstützen Attributfunktionen ähnlich wie C# und Java. Weitere Details werden später bekannt gegeben.
Dann rufen Sie $this->render(‘guess’); auf, um die Guess-Seite anzuzeigen.
Guess-Seiteguest.php ist wie folgt definiert:
In View können Sie über $this direkt auf die Methoden und Eigenschaften des entsprechenden Controller-Instanzobjekts zugreifen. Zum Beispiel $this->guessWord, $this->isGuessed(chr($i)) usw.
Klicken Sie auf 26 Buchstaben, um „guessAction“ auszulösen (array('submit'=>array('guess','g'=>chr($i))))).
unten Die Definition von „guessAction“ ist
, wobei der Parameter „g“ bei der Übermittlung durch die Rateseite übergeben wird. Wenn alle Wörter richtig erraten werden, wird „Sie gewinnen“. angezeigt werden, oder alle Zeiten, in denen Sie falsch geraten haben, werden angezeigt zurück zur Guess-Seite $this->render('guess');
Erstellen Sie ein Verzeichnisstrukturgerüst. Das unter „Erstellen der ersten Webanwendung“ erwähnte yiic-Tool kann diesen Schritt schnell umsetzen.
Konfigurieren Sie diese Anwendung. Dies wird durch Ändern der Anwendungskonfigurationsdatei erreicht. Dieser Schritt erfordert möglicherweise auch das Schreiben einiger Anwendungskomponenten (z. B. Benutzerkomponenten).
Erstellen Sie eine Modellklasse für jeden verwalteten Datentyp. Die unter „Erstellen der ersten Yii-Anwendung und automatische Codegenerierung“ beschriebenen Gii-Tools können verwendet werden, um schnell aktive Datensatzklassen für jede Datentabelle zu erstellen. 4. Erstellen Sie für jeden Benutzeranforderungstyp eine Controller-Klasse. Wie Benutzeranfragen klassifiziert werden, hängt von den tatsächlichen Bedürfnissen ab. Wenn Benutzer auf eine Modellklasse zugreifen müssen, sollte sie im Allgemeinen über eine entsprechende Controller-Klasse verfügen. Gii-Tools können diesen Schritt auch automatisieren.
Implementieren Sie Aktionen und die entsprechenden Ansichten. Das ist die eigentliche Arbeit, die getan werden muss.
Konfigurieren Sie die erforderlichen Aktionsfilter in der Controller-Klasse.
Wenn Sie Theme-Funktionalität benötigen, erstellen Sie ein Theme.
Wenn eine Internationalisierung (I18N) erforderlich ist, erstellen Sie Übersetzungsinformationen.
Wenden Sie geeignete Caching-Techniken auf zwischenspeicherbare Datenpunkte und Ansichtspunkte an.
Endgültige Anpassungen und Bereitstellung.
Das Obige ist der Inhalt des PHP-Entwicklungsframeworks Yii Framework-Tutorial (4) Beispiel für ein Hangman-Wortratespiel. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!