ipc14: zend framework 3 - viva la evolución!
Post on 28-Jun-2015
227 Views
Preview:
DESCRIPTION
TRANSCRIPT
Zend Framework 3Zend Framework 3Viva la evolución!Viva la evolución!
1 / 70
Über michÜber mich
2 / 70www.RalfEggert.dewww.RalfEggert.de
[B00]
PrologProlog3 / 70
[B01]
4 / 70
Wann?Wann?
ZF3?ZF3?
[B02]
5 / 70
ZF3?ZF3?
Warum?Warum?
[B03]
66 / / 7070
ZF3?ZF3?
Was?Was?
[B05]
ZF1ZF17 / 70
Zend Framework 0.1.1
8 / 70
ZF Version ........................... 0.1.1
Erschienen ............... 03.03.2006
PHP Version ........................ 5.0.4
Komponenten gesamt ........... 16
Komponenten neu .................. 16
Komponenten entfallen ......... 0
Library ZIP Größe ......... 274 KB
SteckbriefSteckbrief
[B00]
Version 0.1.1Version 0.1.1
9 / 70
ZENDZEND Zend_ControllerZend_Controller ZEND_DBZEND_DB ZEND_FEEDZEND_FEED
ZEND_FILTERZEND_FILTER Zend_HTTPCLIENTZend_HTTPCLIENT ZEND_INPUTFILTERZEND_INPUTFILTER ZEND_JSONZEND_JSON
ZEND_LOGZEND_LOG Zend_MAILZend_MAIL ZEND_MIMEZEND_MIME ZEND_PDFZEND_PDF
ZEND_SERVICEZEND_SERVICE Zend_URIZend_URI ZEND_VIEWZEND_VIEW ZEND_XMLRPCZEND_XMLRPC
Neue KomponentenNeue Komponenten
Zend Framework 1.0.0
10 / 70
ZF Version ........................... 1.0.0
Erschienen ............... 30.06.2007
PHP Version ........................ 5.1.4
Komponenten gesamt ........... 36
Komponenten neu .................. 22
Komponenten entfallen ......... 3
Library ZIP Größe .......... 2,2 MB
SteckbriefSteckbrief
[B00]
Version 1.0.0Version 1.0.0
11 / 70
Zend_ACLZend_ACL Zend_AUTHZend_AUTH ZEND_CACHEZEND_CACHE ZEND_CONFIGZEND_CONFIG
ZEND_CONSOLEZEND_CONSOLE Zend_DATEZend_DATE Zend_DEbugZend_DEbug ZEND_GdataZEND_Gdata
ZEND_HTTPZEND_HTTPclientclient Zend_LoaderZend_Loader ZEND_LOCALEZEND_LOCALE Zend_MEASUREZend_MEASURE
ZEND_MEMORYZEND_MEMORY ZEND_REGISTRYZEND_REGISTRY ZEND_REQUESTZEND_REQUEST ZEND_RESTZEND_REST
Zend_SEARCHZend_SEARCH ZEND_SERVERZEND_SERVER ZEND_SessionZEND_Session ZEND_TRANSLateZEND_TRANSLate
Zend_VALIDATEZend_VALIDATE ZEND_VERSIONZEND_VERSION
Neue KomponentenNeue Komponenten
Zend Framework 1.10.0
12 / 70
ZF Version ......................... 1.10.0
Erschienen ............... 27.01.2010
PHP Version ........................ 5.2.4
Komponenten gesamt ........... 61
Komponenten neu .................. 30
Komponenten entfallen ......... 5
Library ZIP Größe .......... 5,4 MB
SteckbriefSteckbrief
[B00]
Version 1.10.0Version 1.10.0
13 / 70
Zend_AMFZend_AMF Zend_APPLICATIONZend_APPLICATION ZEND_BARCODEZEND_BARCODE ZEND_CAPTCHAZEND_CAPTCHA
ZEND_CODEgeneratorZEND_CODEgenerator Zend_cryptZend_crypt Zend_currencyZend_currency ZEND_DOJOZEND_DOJO
ZEND_DOMZEND_DOM Zend_FILEZend_FILE ZEND_FORMZEND_FORM Zend_INFOCARDZend_INFOCARD
ZEND_LAYOUTZEND_LAYOUT ZEND_LDAPZEND_LDAP ZEND_MARKUPZEND_MARKUP ZEND_NAVIGATIONZEND_NAVIGATION
Zend_OAUTHZend_OAUTH ZEND_OPENIDZEND_OPENID ZEND_PaginatorZEND_Paginator ZEND_PROGRESSBARZEND_PROGRESSBAR
ZEND_QUEUEZEND_QUEUE Zend_REFLECTIONZend_REFLECTION ZEND_SERIALIZERZEND_SERIALIZER ZEND_SOAPZEND_SOAP
ZEND_TAGZEND_TAG Zend_TESTZend_TEST ZEND_TEXTZEND_TEXT ZEND_TIMESYNCZEND_TIMESYNC
Zend_TOOLZend_TOOL ZEND_WILDFIREZEND_WILDFIRE
Neue KomponentenNeue Komponenten
Zend Framework 1.12.9
14 / 70
ZF Version ......................... 1.12.9
Erschienen ............... 17.09.2014
PHP Version ...................... 5.2.11
Komponenten gesamt ........... 65
Komponenten neu .................... 5
Komponenten entfallen ......... 1
Library ZIP Größe ........ 10,3 MB
SteckbriefSteckbrief
[B00]
Version 1.12.9Version 1.12.9
15 / 70
Zend_CLOUDZend_CLOUD
ZEND_EVENTMANAGERZEND_EVENTMANAGER
ZEND_MOBILEZEND_MOBILE
ZEND_STDLIBZEND_STDLIB
ZEND_XMLZEND_XML
Neue KomponentenNeue Komponenten
ZF1 KritikZF1 Kritik
16 / 70PHP VersionPHP Version
ZF1 KritikZF1 Kritik
17 / 70FeaturitisFeaturitis
[B06]
ZF1 KritikZF1 Kritik
18 / 70DateiumfangDateiumfang
[B07]
ZF1 KritikZF1 Kritik
19 / 70PerformancePerformance
[B08]
ZF1 KritikZF1 Kritik
2020 / / 7070LernkurveLernkurve
[B09]
ZF1 KritikZF1 Kritik
21 / 70DokumentationDokumentation
[B10]
[B00]
ZF2ZF222 / 70
ZF2 FOkUSZF2 FOkUS
2323 / / 7070ModularitätModularität
[B11]
ZF2 FOkUSZF2 FOkUS
24 / 70FlexibilitätFlexibilität
[B12]
ZF2 FOkUSZF2 FOkUS
25 / 70TestbarkeitTestbarkeit
[B13]
ZF2 FOkUSZF2 FOkUS
26 / 70PerformancePerformance
[B14]
ZF2 FOkUSZF2 FOkUS
27 / 70LernkurveLernkurve
[B15]
ZF2 FOkUSZF2 FOkUS
28 / 70MigrationMigration
[B16]
Zend Framework 2.0.0
29 / 70
ZF Version ........................... 2.0.0
Erschienen ............... 04.09.2012
PHP Version ........................ 5.3.3
Komponenten gesamt ........... 48
Komponenten neu .................... 7
Komponenten entfallen ...... 24
Library ZIP Größe .......... 2,2 MB
SteckbriefSteckbrief
[B00]
Version 2.0.0Version 2.0.0
30 / 70
Zend\AUTHENTICATIONZend\AUTHENTICATION Zend\BarcodeZend\Barcode ZEND\CACHEZEND\CACHE ZEND\CAPTCHAZEND\CAPTCHA
ZEND\CODEZEND\CODE Zend\CONFIGZend\CONFIG Zend\CONSOLEZend\CONSOLE ZEND\CRYPTZEND\CRYPT
ZEND\DBZEND\DB Zend\DEBUGZend\DEBUG ZEND\DIZEND\DI Zend\DOMZend\DOM
ZEND\ESCAPERZEND\ESCAPER ZEND\EVENTMANAGERZEND\EVENTMANAGER ZEND\FEEDZEND\FEED ZEND\FILEZEND\FILE
Zend\FILTERZend\FILTER ZEND\FORMZEND\FORM ZEND\HTTPZEND\HTTP ZEND\I18NZEND\I18N
ZEND\INPUTFILTERZEND\INPUTFILTER Zend\JSONZend\JSON ZEND\LDAPZEND\LDAP ZEND\LOADERZEND\LOADER
Komponenten IKomponenten I
Version 2.0.0Version 2.0.0
31 / 70
Zend\LOGZend\LOG Zend\MAILZend\MAIL ZEND\MATHZEND\MATH ZEND\MEMORYZEND\MEMORY
ZEND\MIMEZEND\MIME Zend\MODULEMANAGERZend\MODULEMANAGER Zend\MVCZend\MVC ZEND\NAVIGATIONZEND\NAVIGATION
ZEND\PAGINATORZEND\PAGINATOR Zend\PERMISSIONSZend\PERMISSIONS ZEND\progressbarZEND\progressbar Zend\serializerZend\serializer
ZEND\serverZEND\server ZEND\serviceMANAGERZEND\serviceMANAGER ZEND\SessionZEND\Session ZEND\SOAPZEND\SOAP
Zend\STDLIBZend\STDLIB ZEND\TAGZEND\TAG ZEND\TEXTZEND\TEXT ZEND\URIZEND\URI
ZEND\VALIDATORZEND\VALIDATOR Zend\VERSIONZend\VERSION ZEND\VIEWZEND\VIEW ZEND\XMLRPCZEND\XMLRPC
Komponenten IIKomponenten II
Zend Framework 2.3.3
32 / 70
ZF Version ........................... 2.3.3
Erschienen ............... 17.09.2014
PHP Version ...................... 5.3.23
Komponenten gesamt ........... 49
Komponenten neu .................... 1
Komponenten entfallen ......... 0
Library ZIP Größe .......... 2,7 MB
SteckbriefSteckbrief
[B00]
Version 2.3.3Version 2.3.3
33 / 70
Zend\TestZend\Test
»Neue« Komponenten»Neue« Komponenten
ZF2 VorteileZF2 Vorteile
3434 / / 7070ModularitätModularität
[B11]
ZF2 VorteileZF2 Vorteile
35 / 70FlexibilitätFlexibilität
[B12]
ZF2 VorteileZF2 Vorteile
36 / 70TestbarkeitTestbarkeit
[B13]
ZF2 VorteileZF2 Vorteile
37 / 70Service-LocatorService-Locator
[B17]
ZF2 VorteileZF2 Vorteile
38 / 70PAckagesPAckages
[B18]
ZF2 VorteileZF2 Vorteile
39 / 70Event-ManagerEvent-Manager
[B19]
40 / 70
[B20]
Zend Framework 2?Zend Framework 2?
¡Viva la¡Viva laRevolución!Revolución!
ZF2 KRITIKZF2 KRITIK
41 / 70PHP VersionPHP Version
ZF2 KRITIKZF2 KRITIK
42 / 70KonfigurationKonfiguration
[B21]
ZF2 KRITIKZF2 KRITIK
43 / 70KopplungKopplung
[B22]
ZF2 KRITIKZF2 KRITIK
4444 / / 7070PerformancePerformance
[B23]
ZF2 KRITIKZF2 KRITIK
4545 / / 7070LernkurveLernkurve
[B24]
ZF2 KRITIKZF2 KRITIK
4646 / / 7070MigrationMigration
[B25]
[B26]
ZF3ZF347 / 70
48 / 70
[B27]
ZF3?ZF3?
QuoQuovadis?vadis?
ZF3 FokusZF3 Fokus
4949 / / 7070Lose KopplungLose Kopplung
[B28]
ZF3 FokusZF3 Fokus
5050 / / 7070KonfigurationKonfiguration
[B00]
ZF3 FokusZF3 Fokus
5151 / / 7070BC BreaksBC Breaks
[B29][B29]
ZF3 FOkUSZF3 FOkUS
52 / 70PerformancePerformance
[B14]
ZF3 FOkUSZF3 FOkUS
53 / 70LernkurveLernkurve
[B15]
ZF3 FOkUSZF3 FOkUS
54 / 70MigrationMigration
[B00]
Zend Framework 3.0.0
55 / 70
ZF Version ........................... 3.0.0
Erscheint .................. ??.??.2015
PHP Version ............. 5.4.? / 5.5.?
Komponenten gesamt .............. ?
Komponenten neu .................... ?
Komponenten entfallen ......... ?
Library ZIP Größe ............. ? MB
SteckbriefSteckbrief
[B00]
Neuerungen im ZF3Neuerungen im ZF3
56 / 70
AllgemeinAllgemein Daten inputDaten input
MVC & GedönsMVC & GedönsDiverse ManagerDiverse Manager
AllgemeinAllgemein
AllgemeinAllgemein
57 / 70
Stateless Stateless ApplicationApplication
Komponenten Komponenten als Moduleals Module
Data Data TransformerTransformer
Zend\HydratorZend\HydratorZend\LoaderZend\Loader => Composer=> Composer
Short ArraysShort Arrays
[L01][L01] [L02][L02] [L03][L03]
[L04][L04] [L05][L05] [L06][L06]
Daten InputDaten Input
58 / 70
Filter Filter AufräumenAufräumen
Stateless Stateless ValidatorValidator
Stateless Stateless InputCollectionInputCollection
Formular Formular KomplexitätKomplexität
Formular Formular PerformancePerformance
Formular Formular FieldsetsFieldsets
[L07][L07] [L08][L08] [L09][L09]
[L10][L10] [L10][L10] [L10][L10]
Diverse ManagerDiverse Manager
59 / 70
EventManager EventManager aufräumenaufräumen
EventManager EventManager PerformancePerformance
ModuleManager ModuleManager KonfigurationKonfiguration
Servicemanager Servicemanager PerformancePerformance
ServiceManager ServiceManager AufräumenAufräumen
Servicemanager Servicemanager InitializerInitializer
[L11][L11] [L11][L11] [L12][L12]
[L13][L13] [L14][L14] [L14][L14]
MVC & GedönsMVC & Gedöns
60 / 70
RoutingRoutingSERViCELocator SERViCELocator AwareInterfaceAwareInterface
VIEWVIEWRefactoringRefactoring
RBACRBACRefactoringRefactoring
Paginator Paginator RefactoringRefactoring
Spiffy Spiffy Navigation?Navigation?
[L15][L15] [L16][L16] [L17][L17]
[L18][L18] [L19][L19] [L20][L20]
Fokus KonfigurationFokus Konfiguration
61 / 70
// Routen Konfiguration mit benannten Parametern'user' => [ 'path' => '/user', 'controller' => 'user', 'action' => 'index', 'methods' => ['get']];
// Hierarchische Routen Konfiguration mit geordneten Parametern'user' => ['/user', 'user', 'index', 'children' => [ 'create' => ['/create', 'user', 'create', ['get', 'post']], 'edit' => ['/edit/:id', 'user', 'edit', ['get', 'post'], 'constraints' => [ 'id' => '\d+' ]], 'delete' => ['/delete/:id', 'user', 'delete', ['get', 'post'], 'constraints' => [ 'id' => '\d+' ]],]];
Fokus Lose KopplungFokus Lose Kopplung
62 / 70
// ZF2: Validator mit Zustand$validator = new Boolean();if ($validator->isValid(true)) { // Verarbeite korrektes Ergebnis} else { $error = $validator->getErrorMessages();}
// ZF3: Validator ohne Zustand$validationTranslator = new ValidationTranslator(new Translator());$validator = new Boolean();$validationResult = $validator->validate($value);
if ($validationResult->isValid()) { // Verarbeite korrektes Ergebnis} else { $translatedResult = $validationTranslator->translate($validationResult); $error = $translatedResult->getErrorMessages();}
Fokus BC BreaksFokus BC Breaks
63 / 70
// ZF2: Bad Practice, nicht mehr möglich im ZF3class UserController extends AbstractActionController{ public function indexAction() { $userService = $this->getServiceLocator()->get('User\Service'); }}
// ZF2: Best Practice, weiterhin möglich im ZF3class UserControllerFactory implements FactoryInterface{ public function createService (ServiceLocatorInterface $controllerManager) { $serviceLocator = $controllerManager->getServiceLocator(); $userService = $serviceLocator->get('User\Service'); $controller = new UserController(); $controller->setUserService($userService); return $controller; }}
64 / 70
[B29]
ZF3?
¡Viva laEvolución!
[B30]
65 / 70
ZF3?ZF3?
Wie kann ichWie kann ichHelfen?Helfen?
[B00]
EPILOGEPILOG66 / 70
Zend Framework 3Zend Framework 3ZF3 wird (K)ein (R)evolutionäres Update!ZF3 wird (K)ein (R)evolutionäres Update!
67 / 70
68 / 70
[B31]
Fragen?Fragen?
www.ralfeggert.dewww.ralfeggert.de
BildnachweisBildnachweis[B00] Fotos von Ralf Eggert
[B01] Surprise https://www.flickr.com/photos/photographybycolby/11927931295 von Colby Stopa - CC-BY https://creativecommons.org/licenses/by/2.0/
[B02] There's pain in my head https://www.flickr.com/photos/sneuweger/10418151535 von Stefan Neuweger - CC-BY https://creativecommons.org/licenses/by/2.0/
[B03] Still here https://www.flickr.com/photos/thenovys/3784261365 von Abe Novy - CC-BY https://creativecommons.org/licenses/by/2.0/
[B04] Young student https://www.flickr.com/photos/audiolucistore/14159712431/ von www.audio-luci-store.it - CC-BY https://creativecommons.org/licenses/by/2.0/
[B05] Beatles 4 https://www.flickr.com/photos/beatlesmaniac11/4191790770 von Grey Roger - CC-BY https://creativecommons.org/licenses/by/2.0/
[B06] Multi tools https://www.flickr.com/photos/pennuja/5363515039 von Jim Penucci - CC-BY https://creativecommons.org/licenses/by/2.0/
[B07] Container ship https://www.flickr.com/photos/usoceangov/5369581593 von Noaas - CC-BY https://creativecommons.org/licenses/by/2.0/
[B08] Slow poke - bush gardens https://www.flickr.com/photos/hyku/421609299 von Josh Hallett - CC-BY https://creativecommons.org/licenses/by/2.0/
[B09] Mountain View https://www.flickr.com/photos/henry_hemming/13228460095 von Henry Hemming - CC-BY https://creativecommons.org/licenses/by/2.0/
[B10] Shelves empty https://www.flickr.com/photos/juhansonin/3177622227 von Juhan Sonin - CC-BY https://creativecommons.org/licenses/by/2.0/
[B11] Rainbow cubes with holes https://www.flickr.com/photos/generated/6313491064 von Jared Tarbell - CC-BY https://creativecommons.org/licenses/by/2.0/
[B12] Rubber bands https://www.flickr.com/photos/mullica/5455794041 von Robert Benner - CC-BY https://creativecommons.org/licenses/by/2.0/
[B13] Test tubes https://www.flickr.com/photos/dahlstroms/3945656390 von Håkan Dahlström - CC-BY https://creativecommons.org/licenses/by/2.0/
[B14] Porsche 911 GT3RS https://www.flickr.com/photos/gfreeman23/8450589227 von Axion23 - CC-BY https://creativecommons.org/licenses/by/2.0/
[B15] Scenic Route 207 Texas Plain Trail https://www.flickr.com/photos/mtsrs/2547608404 von mtsrs - CC-BY https://creativecommons.org/licenses/by/2.0/
[B16] Big red button https://www.flickr.com/photos/mellis/223137287 von David Mellis - CC-BY https://creativecommons.org/licenses/by/2.0/
[B17] Quadri's Head Waiter https://www.flickr.com/photos/sonofgroucho/3492736867 von Son of Groucho - CC-BY https://creativecommons.org/licenses/by/2.0/
[B18] Brown paper packages tied up with strings https://www.flickr.com/photos/katerha/12270472734 von Kate Ter Haar - CC-BY https://creativecommons.org/licenses/by/2.0/
[B19] Catering Manager https://www.flickr.com/photos/audiolucistore/13712347043 von www.audio-luci-store.it - CC-BY https://creativecommons.org/licenses/by/2.0/
[B20] Che Guevara https://www.flickr.com/photos/hellosputnik/2102443979 von Sputnik - CC-BY https://creativecommons.org/licenses/by/2.0/
[B21] ISS Configuration as of March 2011 https://www.flickr.com/photos/wildtexas/5755829267 von Shannon Moore - CC-BY https://creativecommons.org/licenses/by/2.0/
[B22] Molecular bonds https://www.flickr.com/photos/pasukaru76/6978143982 von Pascal - CC-BY https://creativecommons.org/licenses/by/2.0/
[B23] Death-Valley Recetrack http://pdphoto.org/PictureDetail.php?mat=pdef&pg=5178 von Jon Sullivan - CC0 http://creativecommons.org/publicdomain/zero/1.0/
[B24] Mount Everest from base camp one https://www.flickr.com/photos/rupertuk/534748923 von Rupert Taylor-Price - CC-BY https://creativecommons.org/licenses/by/2.0/
[B25] Wildebeest Migration https://www.flickr.com/photos/gcode/2908281814 von Alan Green - CC-BY https://creativecommons.org/licenses/by/2.0/
[B26] Captain Future: Man of Tommorrow https://www.flickr.com/photos/hatwoman/4345993453 von Colleen A. Bryant - CC-BY https://creativecommons.org/licenses/by/2.0/
[B27] National Archaeol. Museum of Naples - Barbarian https://www.flickr.com/photos/ell-r-brown/7599471944 von Elliott Brown - CC-BY https://creativecommons.org/licenses/by/2.0/
[B28] Lemon https://www.flickr.com/photos/v1ctor/8493258542 von Viktor - CC-BY https://creativecommons.org/licenses/by/2.0/
[B29] Charles Darwin: Scientific Badass https://www.flickr.com/photos/cgpgrey/4896956109 von www.CGPGrey.com - CC-BY https://creativecommons.org/licenses/by/2.0/
[B30] Young student https://www.flickr.com/photos/audiolucistore/14159712431/ von www.audio-luci-store.it - CC-BY https://creativecommons.org/licenses/by/2.0/
[B31] We are all fan of laptops https://www.flickr.com/photos/scottvanderchijs/4493248747 von Scott & Elaine van der Chijs - CC-BY https://creativecommons.org/licenses/by/2.0/
69 / 70
LINKnachweisLINKnachweis[L01] https://github.com/zendframework/zf2/issues/5599
[L02] https://github.com/zendframework/zf2/issues/5524
[L03] https://github.com/zendframework/zf2/issues/5051
[L04] https://github.com/zendframework/zf2/issues/5474
[L05] https://github.com/zendframework/zf2/issues/6285
[L06] https://github.com/zendframework/zf2/pull/5000
[L07] https://github.com/zendframework/zf2/pull/5097
[L08] https://github.com/zendframework/zf2/pull/5067
[L09] https://github.com/zendframework/zf2/pull/4772
[L10] https://github.com/zendframework/zf2/issues/5443
[L11] https://github.com/zendframework/zf2/pull/5399
[L12] https://github.com/zendframework/zf2/issues/5288
[L13] https://github.com/zendframework/zf2/issues/6068
[L14] https://github.com/zendframework/zf2/pull/5500
[L15] https://github.com/DASPRiD/Dash
[L16] https://github.com/zendframework/zf2/issues/5168
[L17] https://github.com/zendframework/zf2/pull/3935
[L18] https://github.com/spiffyjr/spiffy-navigation
[L19] https://github.com/zendframework/zf2/pull/5520
[L20] https://github.com/zf-fr/rbac
[L21] https://github.com/zendframework/zf2/wiki/ZF-3.0-Backwards-Compatibility-Breaks
70 / 70
top related