Zend\Expressive - höher, schneller, weiter

Ralf Eggert
Ralf EggertGeschäftsführer / Gründer at Travello GmbH
1
ZENDEXPRESSIVE
höher ­ schneller ­ weiter
CODE
INSIDE
2
RALF EGGERT
Trainer
Berater
Autor
Insulaner
Speaker
Entwickler
ZF1
seit 2006
ZF2
seit 2012
ZF3
seit 2016
GF
Travello
GmbH
www.ralfeggert.de
3
1 PSR-7 / Middleware
2
Middleware für Aktionen3
ZendExpressive Überblick
Middleware für die Pipeline4
Und was ist mit Tee MVC?5
4
1 PSR-7 / Middleware
5
WAS IST
PSR-7?
6
PSR­4
Autoload PSR­2
CodingPSR­1
Coding
PSR­3
Logging
PSR­6
Caching
PSR­7
HTTP
PHP-FIG
www.php­fig.org
PSR­11
???
PSR­14
???
PSR­15
???
7
<?php
namespace PsrHttpMessage;
interface MessageInterface
{
public function getProtocolVersion();
public function withProtocolVersion($version);
public function getHeaders();
public function hasHeader($name);
public function getHeader($name);
public function getHeaderLine($name);
public function withHeader($name, $value);
public function withAddedHeader($name, $value);
public function withoutHeader($name);
public function getBody();
public function withBody(StreamInterface $body);
}
PSR-7
MESSAGEINTERFACE
8
<?php
namespace PsrHttpMessage;
interface RequestInterface
extends MessageInterface {}
interface ServerRequestInterface
extends RequestInterface {}
interface ResponseInterface
extends MessageInterface {}
interface StreamInterface {}
interface UploadedFileInterface {}
interface UriInterface{}
PSR-7
WEITEREINTERFACES
9
WAS IST
MIDDLEWARE?
10
CLIENT WEBSERVER
HTTP
REQUEST
HTTP
RESPONSE
HTTP
11
MIDDLEWARE
HTTP
REQUEST
HTTP
RESPONSE
MIDDLEWARE
12
MIDDLEWARE
PIPELINE
HTTP
REQUEST
HTTP
RESPONSE
MIDDLEWARE 1 MIDDLEWARE 2 MIDDLEWARE 3
13
<?php
interface LambdaMiddlewareInterface
{
/**
* @param RequestInterface $request
* @return ResponseInterface
*/
public function __invoke($request);
}
LAMBDA
MIDDLEWARE
INTERFACE
14
<?php
interface InjectedResponseMiddlewareInterface
{
/**
* @param RequestInterface $request
* @param ResponseInterface $response
* @return ResponseInterface
*/
public function __invoke($request, $response);
}
INJECTEDRESPONSE
MIDDLEWARE
INTERFACE
15
<?php
interface InjectedNextMiddlewareInterface
{
/**
* @param RequestInterface $request
* @param ResponseInterface $response
* @param callable $next
* @return ResponseInterface
*/
public function __invoke(
$request, $response, $next = null
);
}
INJECTEDNEXT
MIDDLEWARE
INTERFACE
used
by ZF3
16
2 ZendExpressive Überblick
17
FRAMEWORK SILOS
18
FRAMEWORK SILOS
19
ZEND
DIACTOROS
ZENDSTRATIGILITY
ZENDEXPRESSIVE
ZF KOMPONENTEN
PSR-7
MIDDLEWARE
MIDDLEWARE
APPLICATIONS
20
ROUTER DI CONTAINER TEMPLATE
RENDERER
ERROR
HANDLER
Aura.Router
FastRoute
ZendRouter
Weitere Router
Aura.DI
Pimple­interop
Zend
ServiceManager
Weitere
DI Container
Plates
Twig
ZendView
Weitere
Template­Engine
Whoops
Weiterer
Error­Handler
ZENDEXPRESSIVE
ZUTATEN
21
PERFORMANCE
MESSDATEN
Gemessen im April 2016 mit der ZendExpressive Skeleton 1.0.1
AD = Aura.DI, AR = Aura.Router, FR = FastRoute, ZR = ZendRouter, ZS = ZendServiceManager, ZV = ZendView
Laufzeit (ms) 31,8 106,5 43,8 31,9 103,8 44,9 42,7 117,2 56,1 35,6 31,3
Router FR FR FR AR AR AR ZR ZR ZR FR FR
DI Container ZS ZS ZS ZS ZS ZS ZS ZS ZS AD Pimple
Renderer Plates Twig ZV Plates Twig ZV Plates Twig ZV Plates Plates
22
PERFORMANCE
ERKENNTNISSE
AD = Aura.DI, AR = Aura.Router, FR = FastRoute, ZR = ZendRouter, ZS = ZendServiceManager, ZV = ZendView
AR FR
ZR
ROUTER
Plates
Twig
ZV
RENDERER
AD Pimple ZS
DI CONTAINER
23
PERFORMANCE
FAZIT
AD = Aura.DI, AR = Aura.Router, FR = FastRoute, ZR = ZendRouter, ZS = ZendServiceManager, ZV = ZendView
FR
SCHNELLSTE
VARIANTE
PlatesPimple
PS: Traue keiner Statistik, die du nicht selber gefälscht hast! ;­)
ZR
REINE ZF
VARIANTE
ZVZS
24
INSTALLATION
$ composer create-project ⏎
zendframework/zend-expressive-skeleton ⏎
/var/www/zend-expressive-skeleton
$ cd /var/www/zend-expressive-skeleton
$ composer serve
25
ZENDEXPRESSIVE
SKELETON
APPLICATION
26
VERZEICHNISSTRUKTUR
 config
 autoload
 data
 cache
 public
 src
 Application
 Action
 templates
 application
 error
 layout
 test
 ApplicationTest
 Action
 vendor
 composer.json
 config
 autoload
 data
 cache
 modules
 Application
 config
 src
 Action
 templates
 application
 error
 layout
 test
 Action
 public
 vendor
 composer.json
MODULAR
EINFACH
27
CONFIGMANAGER
$ composer require mtymek/expressive-config-manager
<?php
// Datei /config/config.php
use ZendExpressiveConfigManagerConfigManager;
use ZendExpressiveConfigManagerPhpFileProvider;
$configManager = new ConfigManager([
ApplicationConfigProvider::class,
new PhpFileProvider(
'config/autoload/{{,*.}global,{,*.}local}.php'
),
]);
return new ArrayObject(
$configManager->getMergedConfig()
);
28
CONFIGPROVIDER
<?php
// Datei /modules/Application/src/ConfigProvider.php
namespace Application;
use ZendConfigFactory;
class ConfigProvider
{
public function __invoke()
{
return Factory::fromFile(
__DIR__ . '/../config/module.config.php'
);
}
}
29
COMPONENT
INSTALLER
$ composer require ⏎
zendframework/zend-component-installer
$ composer require zendframework/zend-db
<?php
// Datei /config/config.php
use ZendExpressiveConfigManagerConfigManager;
use ZendExpressiveConfigManagerPhpFileProvider;
$configManager = new ConfigManager([
ZendDbConfigProvider::class,
ApplicationConfigProvider::class,
new PhpFileProvider(
'config/autoload/{{,*.}global,{,*.}local}.php'
),
]);
return new ArrayObject(
$configManager->getMergedConfig()
);
30
Middleware für Aktionen3
31
AKTIONEN BEISPIELE
32
TEMPLATE
BAUSTEINE AKTION
ROUTING
MIDDLEWARE
KONFIGURATION
33
MIDDLEWARE
namespace PizzaAction;
use ApplicationTemplateTemplateRendererInterface;
use PizzaModelRepositoryPizzaRepositoryInterface;
class ShowIntroAction
{
/* ... */
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next = null
) {
$pizzas = $this->pizzaRepository->getPizzas();
return new HtmlResponse(
$this->renderer->render(
'pizza::intro', ['pizzas' => $pizzas]
)
);
}
}
34
ZENDVIEW
TEMPLATE
<?php foreach ($this->pizzas as $pizza) : ?>
<?php
$urlShow = $this->url(
'pizza-show', ['id' => $pizza['id']]
);
?>
<div class="col-md-4">
<div class="thumbnail text-center">
<a href="<?= $urlShow; ?>">
<img src="<?= $pizza['image'] ?>"
title="<?= $pizza['name'] ?>">
</a>
</div>
</div>
<?php endforeach ?>
35
return [
'routes' => [
[
'name' => 'pizza-intro',
'path' => '/pizza',
'middleware' =>
PizzaActionShowIntroAction::class,
'allowed_methods' => ['GET'],
],
[
'name' => 'pizza-handle-delete',
'path' => '/pizza/delete/:id',
'middleware' =>
PizzaActionDeletePizzaAction::class,
'allowed_methods' => ['POST'],
'options' => [
'constraints' => [
'id' => '[1-9][0-9]*',
],
],
],
],
];
ZENDROUTER
ROUTING
36
namespace PizzaRestAction;
class GetIdAction
{
use PizzaRepositoryAwareTrait;
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next = null
) {
$pizza = $this->pizzaRepository->getSinglePizza(
$request->getAttribute('id')
);
if (!$pizza) {
return new JsonResponse(
['err' => 'Not found']
);
}
return new JsonResponse($pizza);
}
}
RESTAKTION
37
Middleware für die Pipeline4
38
HTTP
REQUEST
HTTP
RESPONSE
ROUTING
MIDDLEWARE
URL HELPER
MIDDLEWARE
DISPATCHING
MIDDLEWARE
ZENDEXPRESSIVE
MW PIPELINE
39
HTTP
REQUEST
HTTP
RESPONSE
LOCALIZATION
MIDDLEWARE
AUTHENTICATION
MIDDLEWARE
AUTHORIZATION
MIDDLEWARE
KOMPLEXERE
MW PIPELINE
40
use ZendExpressiveContainerApplicationFactory;
use ZendExpressiveHelper;
return [
'middleware_pipeline' => [
'always' => [
'middleware' => [
HelperServerUrlMiddleware::class,
],
'priority' => 10000,
],
'routing' => [
'middleware' => [
ApplicationFactory::ROUTING_MIDDLEWARE,
HelperUrlHelperMiddleware::class,
ApplicationFactory::DISPATCH_MIDDLEWARE,
],
'priority' => 1,
],
'error' => [
'middleware' => [],
'error' => true,
'priority' => -10000,
],
],
];
DEFAULT
KONFIGURATION
41
use I18nMiddlewareLocalizationMiddleware;
use UserAuthorizationAuthenticationMiddleware;
use UserAuthorizationAuthorizationMiddleware;
use ZendExpressiveContainerApplicationFactory;
use ZendExpressiveHelper;
return [
'middleware_pipeline' => [
'always' => [ /* ... */ ],
'routing' => [
'middleware' => [
ApplicationFactory::ROUTING_MIDDLEWARE,
HelperUrlHelperMiddleware::class,
LocalizationMiddleware::class,
AuthenticationMiddleware::class,
AuthorizationMiddleware::class,
ApplicationFactory::DISPATCH_MIDDLEWARE,
],
'priority' => 1,
],
'error' => [ /* ... */ ],
],
];
KOMPLEXERE
KONFIGURATION
42
namespace UserAuthorization;
class AuthorizationMiddleware
{
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next
) {
$permission = $result->getMatchedRouteName();
if (!$this->rbac->isGranted($this->role, $permission)) {
if ($this->role == GuestRole::NAME) {
throw new RuntimeException(
'Nicht angemeldet', 401
);
} else {
throw new RuntimeException('Kein Zugriff', 403);
}
}
return $next($request, $response);
}
}
AUTHORIZATION
MIDDLEWARE
43
AUTHORIZATION
FEHLGESCHLAGEN
44
Und was ist mit Tee MVC?5
45
WARUM
NOCH MVC,
WENN WIR NUN
MIDDLEWARE
HABEN?
MVCMW
Neues
Konzept
Wenige
Module
Middleware
Pipeline
Schwerere
Integration
unerfahrene
Entwickler
Neue
Projekte
Migration
komplexer
sehr
performant
erprobt
& stabil
viele
Module
Migration
einfach
Leichte
Integration
erfahrene
Entwickler
Event
Manager
Bestands­
projekte
weniger
performant
Zukunft Gegenwart
47
TUTORIAL
https://github.com/RalfEggert/zend­expressive­tutorial
48
ACHTUNG! WERBUNG!
www.zendframeworkbuch.de
49
DANKE!
FRAGEN?
50
1
Digging In
von Zach Dischner
Flickr CC BY 2.0 5
Pipes
von Leonid Mamchenkov
Flickr CC BY 2.0
17
Monument valley
von Moyan Brenn
Flickr CC BY 2.0
30
»and... action«
von Latin Snake
Flickr CC BY 2.0
44
Und was ist mit Tee?
aus der Giotto Werbung
YouTube
37
Pipeline
von jasonwoodhead23
Flickr CC BY 2.0
4
A flowery meadow
von Michael Figiel
Flickr CC BY 2.0
BILDNACHWEIS
49
free high res texture 380
von Caleb Kimbrough
Flickr CC BY 2.0
1 of 50

Recommended

IPC 2015 ZF2rapid by
IPC 2015 ZF2rapidIPC 2015 ZF2rapid
IPC 2015 ZF2rapidRalf Eggert
1.3K views38 slides
Apigility reloaded by
Apigility reloadedApigility reloaded
Apigility reloadedRalf Eggert
1.9K views44 slides
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016) by
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)James Titcumb
1.3K views78 slides
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017) by
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)
Kicking off with Zend Expressive and Doctrine ORM (Sunshine PHP 2017)James Titcumb
1.6K views94 slides
Zend Framework 2 Components by
Zend Framework 2 ComponentsZend Framework 2 Components
Zend Framework 2 ComponentsShawn Stratton
3.1K views46 slides
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин) by
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)
ZFConf 2012: Capistrano для деплоймента PHP-приложений (Роман Лапин)ZFConf Conference
1.8K views44 slides

More Related Content

What's hot

Diving into HHVM Extensions (PHPNW Conference 2015) by
Diving into HHVM Extensions (PHPNW Conference 2015)Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)James Titcumb
1K views78 slides
はじめてのSymfony2 by
はじめてのSymfony2はじめてのSymfony2
はじめてのSymfony2Tomohiro MITSUMUNE
4.7K views21 slides
Zend Framework Study@Tokyo #2 by
Zend Framework Study@Tokyo #2Zend Framework Study@Tokyo #2
Zend Framework Study@Tokyo #2Shinya Ohyanagi
1.3K views68 slides
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин) by
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf Conference
1.1K views32 slides
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017) by
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)James Titcumb
3.1K views94 slides
Symfony2 Service Container: Inject me, my friend by
Symfony2 Service Container: Inject me, my friendSymfony2 Service Container: Inject me, my friend
Symfony2 Service Container: Inject me, my friendKirill Chebunin
8.2K views43 slides

What's hot(20)

Diving into HHVM Extensions (PHPNW Conference 2015) by James Titcumb
Diving into HHVM Extensions (PHPNW Conference 2015)Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)
James Titcumb1K views
Zend Framework Study@Tokyo #2 by Shinya Ohyanagi
Zend Framework Study@Tokyo #2Zend Framework Study@Tokyo #2
Zend Framework Study@Tokyo #2
Shinya Ohyanagi1.3K views
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин) by ZFConf Conference
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf Conference1.1K views
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017) by James Titcumb
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
James Titcumb3.1K views
Symfony2 Service Container: Inject me, my friend by Kirill Chebunin
Symfony2 Service Container: Inject me, my friendSymfony2 Service Container: Inject me, my friend
Symfony2 Service Container: Inject me, my friend
Kirill Chebunin8.2K views
Php 7 hhvm and co by Pierre Joye
Php 7 hhvm and coPhp 7 hhvm and co
Php 7 hhvm and co
Pierre Joye4.1K views
Publishing a Perl6 Module by ast_j
Publishing a Perl6 ModulePublishing a Perl6 Module
Publishing a Perl6 Module
ast_j1.5K views
What you need to remember when you upload to CPAN by charsbar
What you need to remember when you upload to CPANWhat you need to remember when you upload to CPAN
What you need to remember when you upload to CPAN
charsbar1.4K views
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I... by ZFConf Conference
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf Conference1.7K views
Zend/Expressive 3 – The Next Generation by Ralf Eggert
Zend/Expressive 3 – The Next GenerationZend/Expressive 3 – The Next Generation
Zend/Expressive 3 – The Next Generation
Ralf Eggert364 views
Better detection of what modules are used by some Perl 5 code by charsbar
Better detection of what modules are used by some Perl 5 codeBetter detection of what modules are used by some Perl 5 code
Better detection of what modules are used by some Perl 5 code
charsbar3.8K views
On UnQLite by charsbar
On UnQLiteOn UnQLite
On UnQLite
charsbar6.4K views
Getting started with TDD - Confoo 2014 by Eric Hogue
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014
Eric Hogue1.6K views
Continuous testing In PHP by Eric Hogue
Continuous testing In PHPContinuous testing In PHP
Continuous testing In PHP
Eric Hogue760 views

Viewers also liked

Creating an API with Expressive by
Creating an API with ExpressiveCreating an API with Expressive
Creating an API with ExpressiveElton Minetto
4.9K views36 slides
IPC 2015 Zend Framework 3 Reloaded by
IPC 2015 Zend Framework 3 ReloadedIPC 2015 Zend Framework 3 Reloaded
IPC 2015 Zend Framework 3 ReloadedRalf Eggert
1.8K views61 slides
Love Creating! by
Love Creating!Love Creating!
Love Creating!Aderemi Dadepo
642 views14 slides
Introduction to git and github by
Introduction to git and githubIntroduction to git and github
Introduction to git and githubAderemi Dadepo
4.3K views23 slides
Tunesoflovepreview by
TunesoflovepreviewTunesoflovepreview
TunesoflovepreviewAderemi Dadepo
914 views9 slides
AIESEC Nigeria Corporate Portfolio by
AIESEC Nigeria Corporate PortfolioAIESEC Nigeria Corporate Portfolio
AIESEC Nigeria Corporate PortfolioAderemi Dadepo
650 views23 slides

Viewers also liked(13)

Creating an API with Expressive by Elton Minetto
Creating an API with ExpressiveCreating an API with Expressive
Creating an API with Expressive
Elton Minetto4.9K views
IPC 2015 Zend Framework 3 Reloaded by Ralf Eggert
IPC 2015 Zend Framework 3 ReloadedIPC 2015 Zend Framework 3 Reloaded
IPC 2015 Zend Framework 3 Reloaded
Ralf Eggert1.8K views
Introduction to git and github by Aderemi Dadepo
Introduction to git and githubIntroduction to git and github
Introduction to git and github
Aderemi Dadepo4.3K views
AIESEC Nigeria Corporate Portfolio by Aderemi Dadepo
AIESEC Nigeria Corporate PortfolioAIESEC Nigeria Corporate Portfolio
AIESEC Nigeria Corporate Portfolio
Aderemi Dadepo650 views
Apigility – Lightning Fast API Development - OSSCamp 2014 by OSSCube
Apigility – Lightning Fast API Development - OSSCamp 2014 Apigility – Lightning Fast API Development - OSSCamp 2014
Apigility – Lightning Fast API Development - OSSCamp 2014
OSSCube2.9K views
REST Level 5 - A Trek To The Summit by Pat Cappelaere
REST Level 5 - A Trek To The SummitREST Level 5 - A Trek To The Summit
REST Level 5 - A Trek To The Summit
Pat Cappelaere12.8K views
Level 3 REST Makes Your API Browsable by Matt Bishop
Level 3 REST Makes Your API BrowsableLevel 3 REST Makes Your API Browsable
Level 3 REST Makes Your API Browsable
Matt Bishop3.9K views

Similar to Zend\Expressive - höher, schneller, weiter

R-House (LSRC) by
R-House (LSRC)R-House (LSRC)
R-House (LSRC)Fernand Galiana
558 views62 slides
Zend Expressive 3 e PSR-15 by
Zend Expressive 3 e PSR-15Zend Expressive 3 e PSR-15
Zend Expressive 3 e PSR-15Juciellen Cabrera
299 views37 slides
Zend Framework 2 - Basic Components by
Zend Framework 2  - Basic ComponentsZend Framework 2  - Basic Components
Zend Framework 2 - Basic ComponentsMateusz Tymek
5K views24 slides
dotCloud and go by
dotCloud and godotCloud and go
dotCloud and goFlavio Poletti
871 views88 slides
Php engine by
Php enginePhp engine
Php enginejulien pauli
1.9K views34 slides
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016) by
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)James Titcumb
694 views78 slides

Similar to Zend\Expressive - höher, schneller, weiter(20)

Zend Framework 2 - Basic Components by Mateusz Tymek
Zend Framework 2  - Basic ComponentsZend Framework 2  - Basic Components
Zend Framework 2 - Basic Components
Mateusz Tymek5K views
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016) by James Titcumb
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
James Titcumb694 views
Nko workshop - node js crud & deploy by Simon Su
Nko workshop - node js crud & deployNko workshop - node js crud & deploy
Nko workshop - node js crud & deploy
Simon Su2.9K views
Артем Маркушев - JavaScript by DataArt
Артем Маркушев - JavaScriptАртем Маркушев - JavaScript
Артем Маркушев - JavaScript
DataArt681 views
Ростислав Михайлив "Zend Framework 3 - evolution or revolution" by Fwdays
Ростислав Михайлив "Zend Framework 3 - evolution or revolution"Ростислав Михайлив "Zend Framework 3 - evolution or revolution"
Ростислав Михайлив "Zend Framework 3 - evolution or revolution"
Fwdays830 views
ZF2 for the ZF1 Developer by Gary Hockin
ZF2 for the ZF1 DeveloperZF2 for the ZF1 Developer
ZF2 for the ZF1 Developer
Gary Hockin3.3K views
Hack Proof Your Drupal Site by Naveen Valecha
Hack Proof Your Drupal SiteHack Proof Your Drupal Site
Hack Proof Your Drupal Site
Naveen Valecha5.4K views
Drehbuch zum Talk "Rapid Prototyping mit PHP Frameworks" by Ralf Eggert
Drehbuch zum Talk "Rapid Prototyping mit PHP Frameworks"Drehbuch zum Talk "Rapid Prototyping mit PHP Frameworks"
Drehbuch zum Talk "Rapid Prototyping mit PHP Frameworks"
Ralf Eggert4.9K views
Z-Ray: A customizable development tool belt (Zendcon 2016) by Mathew Beane
Z-Ray: A customizable development tool belt (Zendcon 2016)Z-Ray: A customizable development tool belt (Zendcon 2016)
Z-Ray: A customizable development tool belt (Zendcon 2016)
Mathew Beane596 views
Debugging: Rules And Tools - PHPTek 11 Version by Ian Barber
Debugging: Rules And Tools - PHPTek 11 VersionDebugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 Version
Ian Barber1.5K views
Debugging: Rules & Tools by Ian Barber
Debugging: Rules & ToolsDebugging: Rules & Tools
Debugging: Rules & Tools
Ian Barber11.8K views
関西PHP勉強会 php5.4つまみぐい by Hisateru Tanaka
関西PHP勉強会 php5.4つまみぐい関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
Hisateru Tanaka2.6K views
Laravel5 Introduction and essentials by Pramod Kadam
Laravel5 Introduction and essentialsLaravel5 Introduction and essentials
Laravel5 Introduction and essentials
Pramod Kadam414 views
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017) by James Titcumb
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
James Titcumb1.5K views

More from Ralf Eggert

ChatGPT: unser täglich' Bot gib uns heute by
ChatGPT: unser täglich' Bot gib uns heuteChatGPT: unser täglich' Bot gib uns heute
ChatGPT: unser täglich' Bot gib uns heuteRalf Eggert
8 views87 slides
Der ultimative PHP Framework Vergleich 2023 Edition by
Der ultimative PHP Framework Vergleich 2023 EditionDer ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 EditionRalf Eggert
3 views79 slides
PHP Module als Rundum-Sorglos-Pakete entwickeln by
PHP Module als Rundum-Sorglos-Pakete entwickelnPHP Module als Rundum-Sorglos-Pakete entwickeln
PHP Module als Rundum-Sorglos-Pakete entwickelnRalf Eggert
70 views70 slides
Alexa, what's next? by
Alexa, what's next?Alexa, what's next?
Alexa, what's next?Ralf Eggert
311 views58 slides
Alexa, wohin geht die Reise by
Alexa, wohin geht die ReiseAlexa, wohin geht die Reise
Alexa, wohin geht die ReiseRalf Eggert
265 views26 slides
8. Hamburg Voice Interface Meetup by
8. Hamburg Voice Interface Meetup8. Hamburg Voice Interface Meetup
8. Hamburg Voice Interface MeetupRalf Eggert
199 views16 slides

More from Ralf Eggert(20)

ChatGPT: unser täglich' Bot gib uns heute by Ralf Eggert
ChatGPT: unser täglich' Bot gib uns heuteChatGPT: unser täglich' Bot gib uns heute
ChatGPT: unser täglich' Bot gib uns heute
Ralf Eggert8 views
Der ultimative PHP Framework Vergleich 2023 Edition by Ralf Eggert
Der ultimative PHP Framework Vergleich 2023 EditionDer ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 Edition
Ralf Eggert3 views
PHP Module als Rundum-Sorglos-Pakete entwickeln by Ralf Eggert
PHP Module als Rundum-Sorglos-Pakete entwickelnPHP Module als Rundum-Sorglos-Pakete entwickeln
PHP Module als Rundum-Sorglos-Pakete entwickeln
Ralf Eggert70 views
Alexa, what's next? by Ralf Eggert
Alexa, what's next?Alexa, what's next?
Alexa, what's next?
Ralf Eggert311 views
Alexa, wohin geht die Reise by Ralf Eggert
Alexa, wohin geht die ReiseAlexa, wohin geht die Reise
Alexa, wohin geht die Reise
Ralf Eggert265 views
8. Hamburg Voice Interface Meetup by Ralf Eggert
8. Hamburg Voice Interface Meetup8. Hamburg Voice Interface Meetup
8. Hamburg Voice Interface Meetup
Ralf Eggert199 views
Alexa Skill Maintenance by Ralf Eggert
Alexa Skill MaintenanceAlexa Skill Maintenance
Alexa Skill Maintenance
Ralf Eggert385 views
Vom Zend Framework zu Laminas by Ralf Eggert
Vom Zend Framework zu LaminasVom Zend Framework zu Laminas
Vom Zend Framework zu Laminas
Ralf Eggert441 views
Alexa Skills und PHP? Passt das zusammen? by Ralf Eggert
Alexa Skills und PHP? Passt das zusammen?Alexa Skills und PHP? Passt das zusammen?
Alexa Skills und PHP? Passt das zusammen?
Ralf Eggert426 views
Mit Jovo von 0 auf 100 by Ralf Eggert
Mit Jovo von 0 auf 100Mit Jovo von 0 auf 100
Mit Jovo von 0 auf 100
Ralf Eggert477 views
Vom Zend Framework zu Laminas by Ralf Eggert
Vom Zend Framework zu LaminasVom Zend Framework zu Laminas
Vom Zend Framework zu Laminas
Ralf Eggert490 views
Alexa for Hospitality by Ralf Eggert
Alexa for HospitalityAlexa for Hospitality
Alexa for Hospitality
Ralf Eggert249 views
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion... by Ralf Eggert
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
Ralf Eggert802 views
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen by Ralf Eggert
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Ralf Eggert336 views
Die sieben Projektphasen für Voice Projekte by Ralf Eggert
Die sieben Projektphasen für Voice ProjekteDie sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice Projekte
Ralf Eggert332 views
Künstliche Intelligenz – Traum und Wirklichkeit by Ralf Eggert
Künstliche Intelligenz – Traum und WirklichkeitKünstliche Intelligenz – Traum und Wirklichkeit
Künstliche Intelligenz – Traum und Wirklichkeit
Ralf Eggert518 views
Multi-Modal Voice Development with Amazon Alexa by Ralf Eggert
Multi-Modal Voice Development with Amazon AlexaMulti-Modal Voice Development with Amazon Alexa
Multi-Modal Voice Development with Amazon Alexa
Ralf Eggert987 views
Mein Haus, mein Auto, mein Backend by Ralf Eggert
Mein Haus, mein Auto, mein BackendMein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein Backend
Ralf Eggert171 views
Sieben Tipps für den Voice Commerce mit PHP by Ralf Eggert
Sieben Tipps für den Voice Commerce mit PHPSieben Tipps für den Voice Commerce mit PHP
Sieben Tipps für den Voice Commerce mit PHP
Ralf Eggert218 views

Recently uploaded

Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P... by
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...ShapeBlue
120 views62 slides
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...ShapeBlue
69 views29 slides
State of the Union - Rohit Yadav - Apache CloudStack by
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStackShapeBlue
218 views53 slides
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...ShapeBlue
114 views12 slides
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlueShapeBlue
75 views23 slides
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T by
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TShapeBlue
81 views34 slides

Recently uploaded(20)

Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P... by ShapeBlue
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
Developments to CloudStack’s SDN ecosystem: Integration with VMWare NSX 4 - P...
ShapeBlue120 views
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti... by ShapeBlue
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
DRaaS using Snapshot copy and destination selection (DRaaS) - Alexandre Matti...
ShapeBlue69 views
State of the Union - Rohit Yadav - Apache CloudStack by ShapeBlue
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStack
ShapeBlue218 views
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ... by ShapeBlue
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
Backup and Disaster Recovery with CloudStack and StorPool - Workshop - Venko ...
ShapeBlue114 views
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue by ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
2FA and OAuth2 in CloudStack - Andrija Panić - ShapeBlue
ShapeBlue75 views
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T by ShapeBlue
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
ShapeBlue81 views
DRBD Deep Dive - Philipp Reisner - LINBIT by ShapeBlue
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBIT
ShapeBlue110 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue68 views
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker50 views
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit... by ShapeBlue
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
Transitioning from VMware vCloud to Apache CloudStack: A Path to Profitabilit...
ShapeBlue86 views
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue by ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlueMigrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
ShapeBlue147 views
Future of AR - Facebook Presentation by Rob McCarty
Future of AR - Facebook PresentationFuture of AR - Facebook Presentation
Future of AR - Facebook Presentation
Rob McCarty54 views
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue191 views
The Power of Heat Decarbonisation Plans in the Built Environment by IES VE
The Power of Heat Decarbonisation Plans in the Built EnvironmentThe Power of Heat Decarbonisation Plans in the Built Environment
The Power of Heat Decarbonisation Plans in the Built Environment
IES VE67 views
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by ShapeBlue
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystems
ShapeBlue172 views
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely76 views
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool by ShapeBlue
Extending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPoolExtending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPool
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool
ShapeBlue56 views
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson142 views

Zend\Expressive - höher, schneller, weiter