Erste Schritte: Eine Skelettanwendung
Um unsere Anwendung zu erstellen, benötigen wir mindestens PHP 7.3. Wir beginnen mit der Laminas MVC Skeleton-Anwendung , die auf GitHub verfügbar ist . Verwenden Sie Composer , um ein neues Projekt von Grund auf neu zu erstellen:
$ composer create-project -s dev laminas/laminas-mvc-skeleton path/to/install
Dadurch wird ein anfänglicher Satz von Abhängigkeiten installiert, einschließlich:
- laminas-component-installer, der dabei hilft, die Injektion der Komponentenkonfiguration in Ihre Anwendung zu automatisieren.
- laminas-mvc, der Kernel für MVC-Anwendungen.
Standardmäßig wird die Mindestmenge an Abhängigkeiten bereitgestellt, die zum Ausführen einer laminas-mvc-Anwendung erforderlich ist. Möglicherweise haben Sie jedoch zusätzliche Anforderungen, die Sie von Anfang an kennen, und daher wird das Skelett auch mit einem Installations-Plugin geliefert, das Sie zur Eingabe einer Reihe von Elementen auffordert.
Zunächst wird Folgendes angezeigt:
Do you want a minimal install (no optional packages)? Y/n
Eingabeaufforderungen und Standardwerte
Alle vom Installationsprogramm ausgegebenen Eingabeaufforderungen enthalten die Liste der verfügbaren Optionen und geben die Standardoption durch einen Großbuchstaben an. Standardwerte werden verwendet, wenn der Benutzer ohne Wert „Enter“ drückt. Im vorherigen Beispiel ist „Y“ die Standardeinstellung.
Wenn Sie mit „Y“ antworten oder die Eingabetaste ohne Auswahl drücken, wird das Installationsprogramm keine weiteren Eingabeaufforderungen auslösen und die Installation Ihrer Anwendung abschließen. Wenn Sie mit „n“ antworten, werden Sie weiterhin aufgefordert:
Would you like to install the developer toolbar? y/N
Die Entwickler-Symbolleiste bietet eine In-Browser-Symbolleiste mit Timing- und Profiling-Informationen und kann beim Debuggen einer Anwendung hilfreich sein. Für die Zwecke des Tutorials werden wir es jedoch nicht verwenden; drücken Sie entweder „Enter“ oder „n“ gefolgt von „Enter“.
Would you like to install caching support? y/N
Wir werden das Caching in diesem Tutorial nicht demonstrieren, drücken Sie also entweder „Enter“ oder „n“ gefolgt von „Enter“.
Would you like to install database support (installs laminas-db)? y/N
Wir werden laminas-db in diesem Tutorial ausgiebig verwenden, also drücken Sie „y“ gefolgt von „Enter“. Sie sollten den folgenden Text sehen:
Will install laminas/laminas-db (^2.8.1)
When prompted to install as a module, select application.config.php or modules.config.php
Dieses Tutorial verwendet auch Laminas-Form, also wählen wir wieder „y“, um dies zu installieren; dabei wird eine ähnliche Meldung ausgegeben wie bei laminas-db.
An dieser Stelle können wir die verbleibenden Merkmale mit „n“ beantworten:
Would you like to install JSON de/serialization support? y/N
Would you like to install logging support? y/N
Would you like to install MVC-based console support? (We recommend migrating to symfony/console, or Aura.CLI) y/N
Would you like to install i18n support? y/N
Would you like to install the official MVC plugins, including PRG support, identity, and flash messages? y/N
Would you like to use the PSR-7 middleware dispatcher? y/N
Would you like to install sessions support? y/N
Would you like to install MVC testing support? y/N
Would you like to install the laminas-di integration for laminas-servicemanager? y/N
An einem bestimmten Punkt sehen Sie den folgenden Text:
Updating root package
Running an update to install optional packages
...
Updating application configuration...
Please select which config file you wish to inject 'Laminas\Db' into:
[0] Do not inject
[1] config/modules.config.php
Make your selection (default is 0):
Wir möchten die verschiedenen Auswahlen, die wir in der Anwendung getroffen haben, aktivieren. Daher wählen wir 1, was uns dann die folgende Eingabeaufforderung gibt:
Remember this option for other packages of the same type? (y/N)
In unserem Fall können wir sicher „y“ sagen, was bedeutet, dass wir nicht mehr nach zusätzlichen Paketen gefragt werden. (Das einzige Paket im Standardsatz von Eingabeaufforderungen, das Sie möglicherweise nicht standardmäßig aktivieren möchten, ist Laminas\Test.)
Sobald die Installation abgeschlossen ist, entfernt sich das Skeleton-Installationsprogramm selbst und die neue Anwendung kann gestartet werden!
Herunterladen der Skeleton Anwendung
Eine andere Möglichkeit, die Laminas MVC Skeleton-Anwendung zu installieren, ist die Verwendung von github zum Herunterladen eines komprimierten Archivs. Gehen Sie zu https://github.com/laminas/laminas-mvc-skeleton, klicken Sie auf die Schaltfläche „Klonen oder herunterladen“ und wählen Sie „ZIP herunterladen“. Dadurch wird eine Datei mit einem Namen wie laminas-mvc-skeleton-master.zip oder ähnlich heruntergeladen.
Entpacken Sie diese Datei in das Verzeichnis, in dem Sie alle Ihre vhosts aufbewahren, und benennen Sie das resultierende Verzeichnis in laminas-mvc-tutorial.
laminas-mvc-skeleton ist so eingerichtet, dass es den Composer verwendet , um seine Abhängigkeiten aufzulösen. Führen Sie Folgendes in Ihrem neuen Ordner laminas-mvc-tutorial aus, um sie zu installieren:
$ composer self-update $ composer install
Dies dauert eine Weile. Sie sollten eine Ausgabe wie die folgende sehen:
Installing dependencies from lock file - Installing laminas/laminas-component-installer (2.1.2) ... Generating autoload files
An dieser Stelle werden Sie aufgefordert, die oben genannten Fragen zu beantworten.
Alternativ, wenn Sie Composer nicht installiert haben, aber entweder Vagrant oder docker-compose zur Verfügung haben, können Sie Composer über diese ausführen:
# For Vagrant: $ vagrant up $ vagrant ssh -c 'composer install' # For docker-compose: $ docker-compose build $ docker-compose run laminas composer install
Zeitüberschreitungen
Wenn Sie diese Meldung sehen:
[RuntimeException] The process timed out.dann war Ihre Verbindung zu langsam, um das gesamte Paket rechtzeitig herunterzuladen, und das Zeitlimit für Composer ist abgelaufen. Um dies zu vermeiden, statt auszuführen:
$ composer install
stattdessen ausführen:
$ COMPOSER_PROCESS_TIMEOUT=5000 composer installWindows-Benutzer, die WAMP verwenden
1. Installieren Sie Composer für Windows
Überprüfen Sie, ob Composer ordnungsgemäß installiert ist, indem Sie Folgendes ausführen:
$ composer
Andernfalls folgen Sie der Installationsanleitung für Composer.
2. Installieren Sie Git für Windows
Überprüfen Sie, ob Git ordnungsgemäß installiert ist, indem Sie Folgendes ausführen:
$ git
Folgen Sie andernfalls der Installationsanleitung für GitHub Desktop.
3. Installieren Sie nun das Skeleton mit
$ composer create-project -s dev laminas/laminas-mvc-skeleton path/to/install
Wir können jetzt mit der Einrichtung des Webservers fortfahren.
Webserver
In diesem Tutorial werden wir Sie durch vier verschiedene Möglichkeiten zum Einrichten Ihres Webservers führen:
- Über den in PHP integrierten Webserver.
- Über Vagrant.
- Über docker-compose.
- Mit Apache.
Verwendung des integrierten PHP-Webservers
Sie können den in PHP integrierten Webserver verwenden, wenn Sie Ihre Anwendung entwickeln. Starten Sie dazu den Server aus dem Root-Verzeichnis des Projekts:
$ php -S 0.0.0.0:8080 -t public public/index.php
Dadurch wird die Website auf Port 8080 auf allen Netzwerkschnittstellen verfügbar gemacht, die public/index.phpzur Abwicklung des Routings verwendet werden. Das bedeutet, dass die Seite über http://localhost:8080oder erreichbar ist http://:8080.
Wenn Sie es richtig gemacht haben, sollten Sie Folgendes sehen.
Um zu testen, ob Ihr Routing funktioniert, navigieren Sie zu http://localhost:8080/1234
, und Sie sollten die folgende 404-Seite sehen:
Nur Entwickler
Der integrierte Webserver von PHP sollte nur für die Entwicklung verwendet werden.
Vagrant verwenden
Vagrant bietet eine Möglichkeit, virtuelle Maschinen zu beschreiben und bereitzustellen, und ist eine gängige Methode, um eine kohärente und konsistente Entwicklungsumgebung für Entwicklungsteams bereitzustellen. Die Skeleton-Anwendung Vagrantfilebasiert auf Ubuntu 14.04 und verwendet das ondrej/phpPPA, um PHP 7.3 bereitzustellen. Starten Sie es mit:
$ vagrant up
Sobald es erstellt wurde und ausgeführt wird, können Sie Composer auch von der virtuellen Maschine aus ausführen. Als Beispiel werden im Folgenden Abhängigkeiten installiert:
$ vagrant ssh -c 'composer install'
während dies sie aktualisieren wird:
$ vagrant ssh -c 'composer update'
Das Image verwendet Apache 2.4 und ordnet den Hostport 8080 Port 80 auf der virtuellen Maschine zu.
Verwenden von docker-compose
Docker -Container verpacken eine Software und alles, was zu ihrer Ausführung benötigt wird, und garantieren einen konsistenten Betrieb unabhängig von der Hostumgebung. Es ist eine Alternative zu virtuellen Maschinen, da es als Schicht über der Hostumgebung ausgeführt wird.
Docker-Compose ist ein Tool zum Automatisieren der Konfiguration von Containern und zum Erstellen von Abhängigkeiten zwischen ihnen, wie z. B. Volume-Speicher, Netzwerk usw.
Die Skeleton-Anwendung wird mit einer Dockerfile
-Konfiguration für docker-compose ausgeliefert; Wir empfehlen die Verwendung von Docker-Compose, da es eine Grundlage für die Zuordnung zusätzlicher Container bietet, die Sie möglicherweise als Teil Ihrer Anwendung benötigen, einschließlich eines Datenbankservers, Cache-Servern und mehr. Um das Image zu erstellen und zu starten, verwenden Sie:
$ docker-compose up -d --build
Nach dem ersten Build können Sie dies kürzen auf:
$ docker-compose up -d
Nach dem Erstellen können Sie auch Befehle für den Container ausführen. Die Docker-Compose-Konfiguration definiert zunächst nur einen Container mit dem Umgebungsnamen „laminas“; Verwenden Sie das, um Befehle auszuführen, z. B. das Aktualisieren von Abhängigkeiten über Composer:
$ docker-compose run laminas composer update
Die Konfiguration umfasst sowohl PHP 7.3 als auch Apache 2.4 und ordnet den Host-Port 8080 dem Port 80 des Containers zu.
Verwendung des Apache-Webservers
Wir werden die Installation von Apache nicht behandeln und davon ausgehen, dass Sie es bereits installiert haben. Wir empfehlen die Installation von Apache 2.4 und behandeln nur die Konfiguration für diese Version.
Sie müssen jetzt einen virtuellen Apache-Host für die Anwendung erstellen und Ihre Hosts-Datei so bearbeiten, dass http://laminas-mvc-tutorial.localhost
sie index.php
aus dem laminas-mvc-tutorial/public/
Verzeichnis bereitgestellt wird.
Die Einrichtung des virtuellen Hosts erfolgt normalerweise innerhalb von httpd.conf
oder extra/httpd-vhosts.conf
. Wenn Sie verwenden httpd-vhosts.conf
, stellen Sie sicher, dass diese Datei in Ihrer Hauptdatei httpd.conf
enthalten ist. Einige Linux-Distributionen (z. B. Ubuntu) packen Apache so, dass Konfigurationsdateien in gespeichert werden /etc/apache2
und eine Datei pro virtuellem Host im Ordner erstellen /etc/apache2/sites-enabled
. In diesem Fall würden Sie den virtuellen Hostblock unten in die Datei einfügen /etc/apache2/sites-enabled/laminas-mvc-tutorial
.
Stellen Sie sicher, dass dieser NameVirtualHost
definiert und auf *:80
oder ähnlich eingestellt ist, und definieren Sie dann einen virtuellen Host wie folgt:
ServerName laminas-mvc-tutorial.localhost
DocumentRoot /path/to/laminas-mvc-tutorial/public
SetEnv APPLICATION_ENV "development"
DirectoryIndex index.php
AllowOverride All
Require all granted
Stellen Sie sicher, dass Sie Ihre /etc/hosts
oder c:\windows\system32\drivers\etc\hosts
-Datei so aktualisieren, dass sie laminas-mvc-tutorial.localhost
zugeordnet ist 127.0.0.1
. Die Website kann dann mit aufgerufen werden http://laminas-mvc-tutorial.localhost
.
127.0.0.1 laminas-mvc-tutorial.localhost localhost
Starten Sie Apache neu.
Wenn Sie dies richtig gemacht haben, erhalten Sie die gleichen Ergebnisse wie unter dem in PHP integrierten Webserver .
Um zu testen, ob Ihre .htaccessDatei funktioniert, navigieren Sie zu http://laminas-mvc-tutorial.localhost/1234, und Sie sollten die 404-Seite sehen, wie zuvor erwähnt. Wenn Sie einen standardmäßigen Apache 404-Fehler sehen, müssen Sie Ihre .htaccessNutzung korrigieren, bevor Sie fortfahren.
Wenn Sie IIS mit dem URL-Umschreibungsmodul verwenden, importieren Sie Folgendes:
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [NC,L]
Sie haben jetzt eine funktionierende Grundanwendung und wir können damit beginnen, die Einzelheiten für unsere Anwendung hinzuzufügen.
Fehler melden
Optional können Sie bei der Verwendung von Apache die APPLICATION_ENV
Einstellung in Ihrer verwenden VirtualHost
, um PHP alle seine Fehler an den Browser ausgeben zu lassen. Dies kann während der Entwicklung Ihrer Anwendung nützlich sein.
Verzeichnis bearbeiten laminas-mvc-tutorial/public/index.php
und wie folgt ändern:
Entwicklungsmodus
Bevor wir beginnen, aktivieren wir den Entwicklungsmodus für die Anwendung. Die Skeleton-Anwendung stellt zwei Dateien bereit, mit denen wir allgemeine Entwicklungseinstellungen angeben können, die wir überall verwenden möchten. Dazu kann die Aktivierung von Modulen für das Debugging oder die Aktivierung der Fehleranzeige in unseren Ansichtsskripten gehören. Diese Dateien befinden sich unter:
config/development.config.php.dist
config/autoload/development.local.php.dist
Wenn wir den Entwicklungsmodus aktivieren, werden diese Dateien kopiert nach:
config/development.config.php
config/autoload/development.local.php
Dadurch können sie in unsere Anwendung eingebunden werden. Wenn wir den Entwicklungsmodus deaktivieren, werden diese beiden erstellten Dateien entfernt, sodass nur die .dist
Versionen übrig bleiben. (Das Repository enthält auch Regeln zum Ignorieren der Kopien.)
Lassen Sie uns jetzt den Entwicklungsmodus aktivieren:
use Laminas\Mvc\Application;
use Laminas\Stdlib\ArrayUtils;
/**
* Display all errors when APPLICATION_ENV is development.
*/
if ($_SERVER['APPLICATION_ENV'] === 'development') {
error_reporting(E_ALL);
ini_set("display_errors", '1');
}
/**
* This makes our life easier when dealing with paths. Everything is relative
* to the application root now.
*/
chdir(dirname(__DIR__));
// Decline static file requests back to the PHP built-in webserver
if (php_sapi_name() === 'cli-server') {
$path = realpath(__DIR__ . parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
if (__FILE__ !== $path && is_file($path)) {
return false;
}
unset($path);
}
// Composer autoloading
include __DIR__ . '/../vendor/autoload.php';
if (! class_exists(Application::class)) {
throw new RuntimeException(
"Unable to load application.\n"
. "- Type `composer install` if you are developing locally.\n"
. "- Type `vagrant ssh -c 'composer install'` if you are using Vagrant.\n"
. "- Type `docker-compose run laminas composer install` if you are using Docker.\n"
);
}
// Retrieve configuration
$appConfig = require __DIR__ . '/../config/application.config.php';
if (file_exists(__DIR__ . '/../config/development.config.php')) {
$appConfig = ArrayUtils::merge($appConfig, require __DIR__ . '/../config/development.config.php');
}
// Run the application!
Application::init($appConfig)->run();
Aktivieren Sie niemals den Entwicklungsmodus in der Produktion Sie sollten niemals den Entwicklungsmodus in der Produktion aktivieren, da der typische Grund für die Aktivierung darin besteht, das Debugging zu aktivieren! Wie bereits erwähnt, können die durch die Aktivierung des Entwicklungsmodus generierten Artefakte nicht in Ihr Repository übernommen werden. Wenn Sie also den Befehl nicht in der Produktion ausführen, sollten Sie auf der sicheren Seite sein. Sie können den Status des Entwicklungsmodus testen mit:
$ composer development-status
Und Sie können es deaktivieren mit:
$ composer development-disable
< vorherige Seite | nächse Seite > |