zend-framework2 Erste Schritte mit zend-framework2

Bemerkungen

Zend Framework 2 (ZF2) ist ein modernes und flexibles PHP-Framework, das Webentwicklern hilft, Webanwendungen unterschiedlicher Komplexität zu erstellen. Der Hauptsponsor des Unternehmens Zend Framework ist Zend Technologies, was es sehr stark und stabil macht. Es gibt zwei wesentliche Verbesserungen dieser zweiten Version gegenüber ZF1. Erstens wurde standardmäßig eine modulbasierte Architektur ohne Optimierung übernommen. Dies ist praktisch, wenn Sie eine große Webanwendung entwickeln, die eine Zerlegung in Module erfordert. Zweitens implementiert ZF2 alle Funktionen, die PHP5.3+ bieten kann, insbesondere die Namespaces. In den vorherigen Versionen wird eine Controller-Klasse wie folgt benannt:

class IndexController extends Zend_Controller_Action{}

Dieselbe Klasse wird in ZF2 wie folgt umgeschrieben:

namespace Application\Controller;use Zend\Mvc\Controller\AbstractActionController;class IndexController extends AbstractActionController{}

Im Folgenden sind einige andere spannende Features von ZF2:

  • Abhängigkeitsinjektion
  • EventManager
  • ServiceManager

Ein einfaches Hallo Welt

Rufen Sie in Ihrer Befehlszeile das Verzeichnis auf, in dem Sie das Projekt erstellen möchten, und geben Sie dann Folgendes ein: composer create-project zendframework/skeleton-application helloWorldTest . Während der Installation werden Sie gefragt, ob Sie eine minimale Installation wünschen: Sagen wir im Moment ja, wir testen nur.

Der Einfachheit halber verwenden wir den integrierten PHP-CLI-Server. Begeben Sie sich über die Befehlszeile in das Stammverzeichnis Ihres Projekts (helloWorldTest ) und führen Sie dann Folgendes aus : php -S 0.0.0.0:8080 -t public/ public/index.php . Öffnen Sie nun Ihren Webbrowser und gehen Sie zu http://localhost/. Sie sollten die Begrüßungsseite der ZF2 Skeleton-Anwendung sehen.

Wenn Sie dies tun, werden wir nun eine neue Seite einrichten. In module/Application/config/module.config.php sehen Sie, dass für den Anwendungsunterordner bereits eine dynamische Route eingerichtet ist:

return , 'application' => ', 'defaults' => , ], ], ], ], 

Setzen Sie eine neue Aktion „helloWorldAction() “ in module/Applicaiton/src/Controller/IndexController.php :

class IndexController extends AbstractActionController{ public function indexAction() { ... } public function helloWorldAction() { return new ViewModel(); }} 

Erstellen Sie abschließend die Ansichtsdatei module/Application/view/application/index/hello-world.phtml mit folgendem Inhalt:

<?phpecho "Hello World !"; 

Gehen Sie nun zu http://localhost/application/hello-world und sagen Sie Hallo zu ZF2!

So erstellen Sie eine Factory

Wenn eine Klasse mit harten Abhängigkeiten versehen werden muss, empfiehlt es sich, ein Konstruktorinjektionsmuster zu verwenden, bei dem diese Abhängigkeiten mithilfe einer Factory injiziert werden.

Nehmen wir an, dass MyClass stark von einem Wert $dependency abhängt, der aus der Anwendungskonfiguration aufgelöst werden muss.

<?phpnamespace Application\Folder;use Zend\ServiceManager\FactoryInterface;use Zend\ServiceManager\ServiceLocatorInterface;class MyClass{ protected $dependency; public function __construct($dependency) { $this->dependency = $dependency; }} 

Um diese Abhängigkeit zu injizieren, wird eine Factory-Klasse erstellt. Diese Factory löst die Abhängigkeit von der Konfiguration auf und injiziert den Konfigurationswert beim Erstellen der Klasse und gibt das Ergebnis zurück:

<?phpnamespace Application\Factory;use Zend\ServiceManager\FactoryInterface;use Zend\ServiceManager\ServiceLocatorInterface;class MyClassFactory implements FactoryInterface{ public function createService(ServiceLocatorInterface $serviceLocator) { $config = $servicelocator->get('Config'); $dependency = $config; $myClass = new MyClass($dependency); return $myClass; }} 

Nachdem die Factory-Klasse erstellt wurde, muss sie in der Service Manager-Konfiguration in der Modulkonfigurationsdatei module.config.php unter dem Schlüssel factories registriert werden. Es empfiehlt sich, sowohl für die Klasse als auch für die Factory dieselben Namen zu verwenden, damit Sie sie leicht im Projektordnerbaum finden können:

<?phpnamespace Application;return array( //... 'service_manager' => ], //...); 

Alternativ können die Klassennamenkonstanten verwendet werden, um sie zu registrieren:

<?phpnamespace Application;use Application\Folder\MyClass;use Application\Factory\MyClassFactory;return array( //... 'service_manager' => ], //...); 

Jetzt kann die Klasse beim Service Manager mit dem Schlüssel abgeholt werden, den wir bei der Registrierung der Factory für diese Klasse verwendet haben:

 $serviceManager->get('Application\Folder\MyClass'); 

oder

 $serviceManager->get(MyClass::class); 

Der Service Manager findet, sammelt und führt die Factory aus und gibt dann Ihre Klasseninstanz mit der injizierten Abhängigkeit zurück.

Installation oder Einrichtung

Detaillierte Anweisungen zum Einrichten oder Installieren von Zend Framework 2. Es gibt verschiedene Möglichkeiten, das Framework zu installieren. Im Folgenden sind einige davon aufgeführt:

Verwenden von Composer – Empfohlene Methode

Vorausgesetzt, composer ist auf der Zielbox installiert.

Um eine Skelett-MVC-Anwendung zu installieren, führen Sie sie in Ihrem Terminal aus, um ein neues zend framework 2-Projekt am angegebenen Speicherort zu erstellen:

php composer.phar create-project -sdev \ --repository-url="https://packages.zendframework.com" \ zendframework/skeleton-application path/to/install 

um ein minimales ZF2 (Zend MVC + seine Handvoll Abhängigkeiten) manuell zu installieren, führen Sie es in Ihrer Befehlszeile aus:

composer require zendframework/zend-mvc 

oder für einen vollwertigen ZF2 (+64 Module):

composer require zendframework/zendframework` 

Bitte beachten Sie, dass die erste Option ein Installationsprogramm ausführt, das Ihnen eine voll funktionsfähige Anwendung zusammen mit der üblichen Struktur der Anwendungsverzeichnisse zur Verfügung stellt. Mit anderen Optionen können Sie die gesamte Anwendung von Grund auf neu erstellen, da sie einfach ZF2-Module zum Erstellen bereitstellt.

Git-Submodule verwenden

Führen Sie den folgenden Befehl aus, um zf2 und seine Abhängigkeiten rekursiv von Github zu klonen:

git clone git://github.com/zendframework/ZendSkeletonApplication.git --recursive 

HTTP Server Setup

Für eine typische Webanwendung muss ein HTTP-Dienst ausgeführt werden, der einen dedizierten Port (normalerweise:80) abhört, um eingehende Anforderungen an die Anwendung weiterzuleiten, die Ausgabe (Antwort) zu verarbeiten und bereitzustellen.

Hinweis: Sie können auch konsolensensitive Anwendungen in Zend Framework 2 schreiben, ohne einen HTTP-Server zu benötigen.

OPTION 1 – PHP CLI-Server

Der einfachste Weg, um loszulegen, wenn Sie PHP 5.4 oder höher verwenden, besteht darin, den internen PHP CLI-Server im Stammverzeichnis zu starten.

Gehen Sie zum Projektverzeichnis und führen Sie:

php -S 0.0.0.0:8080 -t public/ public/index.php`. 

Dadurch wird der integrierte CLI-Server an Port 8080 gestartet und an alle Netzwerkschnittstellen gebunden.

OPTION 2 – Ein benutzerdefinierter HTTP-Server

Konfigurieren Sie einen Virtualhost auf einem Apache- oder Microsoft IIS-Server oder Nginx und übergeben Sie eingehende HTTP-Anforderungen an die Anwendung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.