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

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

Arzneimittel Zeitung

Arzneimittel Zeitung

Die Arneimittel Zeitung ist die Zeitung für Entscheider und Mitarbeiter in der Pharmabranche. Sie informiert branchenspezifisch über Gesundheits- und Arzneimittelpolitik, über Unternehmen und ...

arznei-telegramm

arznei-telegramm

Das arznei-telegramm® informiert bereits im 53. Jahrgang Ärzte, Apotheker und andere Heilberufe über Nutzen und Risiken von Arzneimitteln. Das arznei-telegramm®  ist neutral und ...

FREIE WERKSTATT

FREIE WERKSTATT

Die Fachzeitschrift FREIE WERKSTATT berichtet seit der ersten Ausgaben 1994 über die Entwicklungen des Independent Aftermarkets (IAM). Hauptzielgruppe sind Inhaberinnen und Inhaber, Kfz-Meisterinnen ...

bank und markt

bank und markt

Zeitschrift für Banking - die führende Fachzeitschrift für den Markt und Wettbewerb der Finanzdienstleister, erscheint seit 1972 monatlich. Leitthemen Absatz und Akquise im Multichannel ...

caritas

caritas

mitteilungen für die Erzdiözese FreiburgUm Kindern aus armen Familien gute Perspektiven für eine eigenständige Lebensführung zu ermöglichen, muss die Kinderarmut in Deutschland nachhaltig ...

Courier

Courier

The Bayer CropScience Magazine for Modern AgriculturePflanzenschutzmagazin für den Landwirt, landwirtschaftlichen Berater, Händler und generell am Thema Interessierten, mit umfassender ...

SPORT in BW (Württemberg)

SPORT in BW (Württemberg)

SPORT in BW (Württemberg) ist das offizielle Verbandsorgan des Württembergischen Landessportbund e.V. (WLSB) und Informationsmagazin für alle im Sport organisierten Mitglieder in Württemberg. ...