Upload
enrico-zimuel
View
14.272
Download
0
Embed Size (px)
DESCRIPTION
Talk presented at the Dutch PHP Conference 2012 in Amsterdam. Hands on the Zend Skeleton Application of ZF 2.0.0beta4
Citation preview
© All rights reserved. Zend Technologies, Inc.
A quick start onZend Framework 2
by Enrico Zimuel ([email protected])
Senior Software EngineerZend Framework Core TeamZend Technologies Ltd
© All rights reserved. Zend Technologies, Inc.
• Enrico Zimuel (@ezimuel)
• Software Engineer since 1996– Assembly x86, C/C++, Java, Perl, PHP
• PHP Engineer at Zend Technologies in
the Zend Framework Team
• International speaker on PHP and
computer security topics
• Researcher programmer at
Informatics Institute of University
of Amsterdam
• Co-founder of the PUG Torino (Italy)
About me
@ezimuel
www.zimuel.it
© All rights reserved. Zend Technologies, Inc.
ZF2 in a slide
● New architecture
▶ MVC, Di, Events, Service, Module● Better performance
● Requirement: PHP 5.3.3
● No more CLA (Contributor License Agreement)
● Git (GitHub) instead of SVN
● Packaging system
▶ pyrus, composer
© All rights reserved. Zend Technologies, Inc.
A new core
● The ZF1 way:
▶ Singleton, Registry, and Hard-Coded Dependencies
● The ZF2 approach:
▶ Aspect Oriented Design and Dependency Injection
© All rights reserved. Zend Technologies, Inc.
MVC is event driven
● Everything is an event
dispatchbootstrap route
Listeners
© All rights reserved. Zend Technologies, Inc.
Releases
● ZF2.0.0beta4
● Goal:
▶ beta5 at the end of June▶ ZF 2.0 RC this summer!!!
© All rights reserved. Zend Technologies, Inc.
Quick startZend Skeleton Application
© All rights reserved. Zend Technologies, Inc.
Zend Skeleton Application
● A simple, skeleton application using the new MVC layer and the module system
● How to install:$ cd my/project/dir$ git clone git://github.com/zendframework/ZendSkeletonApplication.git$ cd ZendSkeletonApplication$ php composer.phar install
© All rights reserved. Zend Technologies, Inc.
Output
© All rights reserved. Zend Technologies, Inc.
Folder's tree
config
data
module
public
vendor
© All rights reserved. Zend Technologies, Inc.
Config folder
config
autoload
application.config.php
data
module
public
vendor
© All rights reserved. Zend Technologies, Inc.
Data folder
config
data
cache
module
public
vendor
© All rights reserved. Zend Technologies, Inc.
Module folder
moduleApplication
configmodule.config.php
srcApplication
ControllerIndexController.php
viewapplication
indexindex.phtml
errorlayout
Module.php
Name of the module
© All rights reserved. Zend Technologies, Inc.
Public folder
public
images
js
css
.htaccess
index.php
© All rights reserved. Zend Technologies, Inc.
Vendor folder
config
data
module
public
vendor
zendframework
© All rights reserved. Zend Technologies, Inc.
configuration
© All rights reserved. Zend Technologies, Inc.
/config/application.config.php
© All rights reserved. Zend Technologies, Inc.
public folder
© All rights reserved. Zend Technologies, Inc.
public/.htaccess
RewriteEngine OnRewriteCond %{REQUEST_FILENAME} -s [OR]RewriteCond %{REQUEST_FILENAME} -l [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^.*$ - [NC,L]RewriteRule ^.*$ index.php [NC,L]
© All rights reserved. Zend Technologies, Inc.
public/index.php
© All rights reserved. Zend Technologies, Inc.
Zend\ServiceManager
● The ServiceManager is a Service Locator implementation
● A Service Locator is a well-known object in which you may register objects (more in general services) and later retrieve them
● Driven by configuration
© All rights reserved. Zend Technologies, Inc.
Types of Services
● Explicit (name => object pairs)
● Invokables (name => class to instantiate)
● Factories (name => callable returning object)
● Aliases (name => some other name)
● Abstract Factories (unknown services)
● Scoped Containers (limit what can be created)
● Shared (or not; you decide)
© All rights reserved. Zend Technologies, Inc.
module
© All rights reserved. Zend Technologies, Inc.
A module is all related code and assets that solve a specific problem.
Modules inform the MVC about services and event listeners
Modules by default
© All rights reserved. Zend Technologies, Inc.
Modules for ZF2
● The basic unit in a ZF2 applicationis a Module
● Modules are “Plug and play” technology● Modules are simple:
▶ A namespace▶ Containing a single classfile: Module.php
© All rights reserved. Zend Technologies, Inc.
Develop Modules
● Modules contain all logic related to a discrete application problem.
▶ Controllers▶ Entities▶ Plugins▶ Etc.
● 99% of the time, you will write modules
© All rights reserved. Zend Technologies, Inc.
\module\Application\Module.php
© All rights reserved. Zend Technologies, Inc.
/module/Application/config/module.config.php(routing part)
© All rights reserved. Zend Technologies, Inc.
/module/Application/config/module.config.php(controller part)
© All rights reserved. Zend Technologies, Inc.
/module/Application/config/module.config.php(view)
© All rights reserved. Zend Technologies, Inc.
/module/Application/src/Application/Controller/IndexController.php
Passing array() of variables to the view
© All rights reserved. Zend Technologies, Inc.
Packaging system
© All rights reserved. Zend Technologies, Inc.
Pyrus
● http://packages.zendframework.com/
● Download or use pyrus, a PEAR2 installer
● Pyrus packages:
▶ Pyrus setup▶ wget http://packages.zendframework.com/pyrus.phar▶ pyrus.phar .▶ pyrus.phar . channeldiscover packages.zendframework.com
▶ Install a Zend_<component>▶ pyrus.phar . install zf2/Zend_<component>
© All rights reserved. Zend Technologies, Inc.
Composer
● New package management and distribution
tool
● http://packagist.org/
● http://getcomposer.org/
© All rights reserved. Zend Technologies, Inc.
composer.json
© All rights reserved. Zend Technologies, Inc.
From ZF1 to ZF2
© All rights reserved. Zend Technologies, Inc.
From ZF1 to ZF2
● Goal: migrate without rewriting much code!
● Main steps
▶ Namespace: Zend_Foo => Zend\Foo▶ Autoloading: 3 options ▶ MVC: module, event based, dispatchable▶ DB: new Zend\Db▶ Form: new Zend\Form
● Can run in parallel (instant migration!)
© All rights reserved. Zend Technologies, Inc.
Conclusion:ZF2 rocks!
© All rights reserved. Zend Technologies, Inc.
Why ZF2 rocks!
● Based on solid architecture principles
● Very fast (focused on optimization)
● Open architecture (event driven)
● Support of modules (reuse of the code)
● Driven by the community (100% open source)
● Completed tested (PHPUnit, Travis CI)
● Packages (pyrus, composer)
© All rights reserved. Zend Technologies, Inc.
We want you!
● How to contribute:
▶ Write code▶ Documentation▶ Testing▶ Feedbacks/comments
https://github.com/zendframework/zf2
© All rights reserved. Zend Technologies, Inc.
Helping out
● http://framework.zend.com/zf2
● http://github.com/zendframework● https://github.com/zendframework/ZendSkeletonApplication
● Getting Started with Zend Framework 2by Rob Allen, http://www.akrabat.com
● Weekly IRC meetings (#zf2-meeting on Freenode)
● #zftalk.2 on Freenode IRC
© All rights reserved. Zend Technologies, Inc.
Thank you!
● Comment this talk at:
▶ https://joind.in/6237● Direct contact:
▶ [email protected]▶ @ezimuel