Sie sind hier
E-Book

Migration von ZF1 nach ZF2 - ein Überblick

AutorRalf Eggert
Verlagentwickler.press
Erscheinungsjahr2014
Seitenanzahl87 Seiten
ISBN9783868025057
FormatePUB
KopierschutzWasserzeichen
GerätePC/MAC/eReader/Tablet
Preis2,99 EUR
Das Zend Framework 2 ist schon über ein Jahr alt, doch noch immer bleiben nicht wenige Entwickler beim Zend Framework 1. Vor diesem Hintergrund soll es im ersten Kapitel dieses shortcuts darum gehen, wie Sie Ihre ZF1-Anwendung schrittweise zum Zend Framework 2 migrieren können. Zur Illustration hierfür dienen kleine Beispielanwendungen, Voraussetzung ist, dass Sie sich mit dem ZF2 sowie mit Git und GitHub auskennen. Kapitel 2 beleuchtet die Migration des MVC-Layers für das Blog-Modul und die Migration der Authentifizierung und Autorisierung. Abschließend erfolgt ein Ausblick auf das für Quartal 3 2014 erwartete ZF3.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

2 Die Migration des MVC-Layers

Im ersten Kapitel sind wir auf die Gründe eingegangen, die für und gegen eine Migration vom ZF1 auf das ZF2 sprechen, und haben die Probleme bei einer Migration skizziert. Jetzt geht es unter anderem um die Migration des MVC-Layers.

Als Basis für unsere Migration hatten wir eine ZF1-Anwendung [1] genommen, die alle wesentlichen Bestandteile einer ZF1-Applikation enthielt. Wir haben die SkeletonApplication installiert und damit begonnen, die Startseite zu migrieren. Dabei haben wir Layout, Navigation, Translator, Autoloading sowie das View-Skript migriert und einen CompatibilityListener für Migration von ZF1-Konfigurationseinstellungen eingerichtet. Der Zwischenstand ist auf GitHub zu finden [3] und wir befinden uns dort auf dem Stand des step3-Branches.

In diesem Kapitel werden wir uns um die Migration des MVC-Layers für das Blog-Modul kümmern. Das betrifft das Routing, die Navigation, die Action-Controller, die View-Skripte und View-Helper. Außerdem werden wir uns um die Migration der Authentifizierung und Autorisierung kümmern. Zu guter Letzt wird der Model-Layer für das Modul mit all seinen Komponenten migriert. Und dann ist da ja auch noch das User-Modul.

Hinweis

Die Listings in diesem Kapitel finden Sie auch zusätzlich auf: GitHub unter https://github.com/PHPMagazin/PHP-Magazin-2.2014

Dafür machen wir nun genau an der Stelle weiter, an der wir beim letzten Mal aufgehört haben. Zur Erinnerung: Wir beziehen uns auf das Repository für die Migration [2] und steigen wieder beim step3-Branch ein:

cd /home/devhost/dev.zf2migration.de
git checkout step3

Schritt 4: MVC-Layer für Blog-Modul migrieren

Um den MVC-Layer für das Blog-Modul zum ZF2 portieren zu können, müssen wir folgende Teilschritte umsetzen:

  • Routing migrieren
  • Action-Controller migrieren
  • View-Skripte migrieren
  • View-Helper migrieren
  • Navigation migrieren
  • Services sauber injizieren
  • Adminbereich für Blog migrieren

Schritt 4a: Routing migrieren

Zuerst müssen wir erneut die .htaccess-Datei anpassen, damit alle Anfragen für das Blogmodul zukünftig durch die ZF2-Applikation verarbeitet werden können (Listing 2.1). Das betrifft alle Routen, die mit einem Sprachschlüssel gefolgt von /blog, /beitrag, /kategorie oder /nut­zer beginnen. Danach müssen die vier Routen in der Datei /module/Blog/config/module.config.php angelegt werden (Listing 2.2). Die vier Routen lassen sich sicherlich noch optimieren. Sollte die URL-Struktur bei der Migration geändert werden, müssen Sie sicherstellen, dass die alten Routen zumindest für eine Übergangszeit funktionieren und auf die neuen Routen umleiten. Dabei setzen Sie auch den entsprechenden HTTP-Statuscode. Für unsere Migration wollen wir die Struktur jedoch so beibehalten.

[...]

# Umschreiberegeln für das Zend Framework
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^$|^en$ index.zf2.php
RewriteRule ^application(.*)$ index.zf2.php

RewriteRule ^(de|en)/blog|beitrag|kategorie|nutzer(.*)$ index.zf2.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /index.zf1.php

[...]

Listing 2.1

return array(
'router' => array(
'routes' => array(
'blog' => array(
'type' => 'Segment',
'options' => array(
'route' => '/:lang/blog[/:page]',
'defaults' => array(
'__NAMESPACE__' => 'Blog\Controller',
'lang' => 'de',
'controller' => 'index',
'action' => 'index',
),
'constraints' => array(
'lang' => '(de|en)',
'page' => '[0-9]*',
),
),
),
'blog-article' => array(
'type' => 'Segment',
'options' => array(
'route' => '/:lang/beitrag/:url',
'defaults' => array(
'__NAMESPACE__' => 'Blog\Controller',
'language' => 'de',
'controller' => 'index',
'action' => 'show',
),
'constraints' => array(
'lang' => '(de|en)',
'url' => '[a-z0-9-]*',
),
),
),
'blog-category' => array(
'type' => 'Segment',
'options' => array(
'route' => '/:lang/kategorie/:url[/:page]',
'defaults' => array(
'__NAMESPACE__' => 'Blog\Controller',
'language' => 'de',
'controller' => 'index',
'action' => 'category',
),
'constraints' => array(
'lang' => '(de|en)',
'url' => '[a-z0-9-]*',
'page' => '[0-9]*',
),
),
),
'blog-user' => array(
'type' => 'Segment',
'options' => array(
'route' => '/:lang/nutzer/:url[/:page]',
'defaults' => array(
'__NAMESPACE__' => 'Blog\Controller',
'language' => 'de',
'controller' => 'index',
'action' => 'user',
),
'constraints' => array(
'lang' => '(de|en)',
'url' => '[a-z0-9-]*',
'page' => '[0-9]*',
),
),
),
),
),
);

Listing 2.2

Wenn Sie jetzt den URL http://dev.zf2migration.de/de/blog aufrufen, sollten Sie die Fehlermeldung „Page not found. The requested controller could not be mapp­ed to an existing controller class.“ erhalten. Diese Meldung besagt, dass der durch das Routing ermittelte Controller nicht gefunden werden konnte. Das Routing funktioniert damit schon einmal.

Schritt 4b: Action-Controller migrieren

Als Nächstes muss der Action-Controller für das Blog migriert werden. Dafür legen Sie zuerst die Datei /mo­dule/­Blog/src/Blog/Controller/IndexController.php mit allen benötigten Verzeichnissen an. Darin legen Sie dann die entsprechende Klasse IndexController mit den vier Aktionsmethoden an, die wir benötigen (Listing 2.3). Zusätzlich müssen wir dem ControllerLoad­er den neuen Controller in der /module/Blog/config/module.config.php-Datei bekannt machen (Listing 2.4). Wenn Sie jetzt einmal die Seite im Browser aufrufen, sollten Sie eine Exception mit der Meldung „Unable to render template "blog/index/index"; resolver could not resolve to a file“ erhalten. Der Controller wird also geladen, nur das entsprechende View-Skript kann nicht gefunden werden.

<?php
namespace Blog\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class IndexController extends AbstractActionController
{
public function categoryAction()
{
return new ViewModel(array());
}

public function indexAction()
{
return new ViewModel(array());
}

public function showAction()
{
return new ViewModel(array());
}

public function userAction()
{
return new ViewModel(array());
}
}

Listing 2.3

return array(
'controllers' => array(
'invokables' => array(
...
Blick ins Buch

Weitere E-Books zum Thema: Software-Design - Softwareentwicklung

Software Engineering

E-Book Software Engineering
Architektur-Design und Prozessorientierung Format: PDF

Das Lehrbuch behandelt alle Aspekte der Software-Entwicklung, besonders aber Methoden und Richtlinien zur Herstellung großer und qualitativ hochwertiger Softwareprodukte. Es vermittelt das zur…

Software Engineering

E-Book Software Engineering
Architektur-Design und Prozessorientierung Format: PDF

Das Lehrbuch behandelt alle Aspekte der Software-Entwicklung, besonders aber Methoden und Richtlinien zur Herstellung großer und qualitativ hochwertiger Softwareprodukte. Es vermittelt das zur…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

Automotive Embedded Systeme

E-Book Automotive Embedded Systeme
Effizfientes Framework - Vom Design zur Implementierung Format: PDF

Die Entwicklung hochkomplexer automotiver Infotainmentsysteme bestehend aus einer Headunit und weiteren Komponenten wie Audio- und Videoelementen, Kommunikationseinheiten, Navigationssystemen und…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

Weitere Zeitschriften

Augenblick mal

Augenblick mal

Die Zeitschrift mit den guten Nachrichten "Augenblick mal" ist eine Zeitschrift, die in aktuellen Berichten, Interviews und Reportagen die biblische Botschaft und den christlichen Glauben ...

e-commerce magazin

e-commerce magazin

PFLICHTLEKTÜRE – Seit zwei Jahrzehnten begleitet das e-commerce magazin das sich ständig ändernde Geschäftsfeld des Online- handels. Um den Durchblick zu behalten, teilen hier renommierte ...

EineWelt

EineWelt

Lebendige Reportagen, spannende Interviews, interessante Meldungen, informative Hintergrundberichte. Lesen Sie in der Zeitschrift „EineWelt“, was Menschen in Mission und Kirche bewegt Man kann ...

building & automation

building &amp; automation

Das Fachmagazin building & automation bietet dem Elektrohandwerker und Elektroplaner eine umfassende Übersicht über alle Produktneuheiten aus der Gebäudeautomation, der Installationstechnik, dem ...