SlideShare a Scribd company logo
PSR-7‫و‬middleware-‫ها‬‫معرفی‬ ‫و‬end Expressive
‫عربی‬ ‫میالد‬
8‫برنامه‬ ‫سال‬
‫نویس‬PHP
‫دهنده‬ ‫توسعه‬BSS/CRM
milad.arabi@gmail.com
@ooghry
Linkedin
microphp.org
I am a PHP developer
• I am not a Zend Framework or Symfony or CakePHP developer
• I think PHP is complicated enough
I like building small things
• I like building small things with simple purposes
• I like to make things that solve problems
• I like building small things that work together to solve larger problems
I want less code, not more
• I want to write less code, not more
• I want to manage less code, not more
• I want to support less code, not more
• I need to justify every piece of code I add to a project
I like simple, readable code
• I want to write code that is easily understood
• I want code that is easily verifiable
PSR-7 - Middleware - Zend Expressive
PSR-7 - Middleware - Zend Expressive
PSR-7 - Middleware - Zend Expressive
‫دنیای‬PHP‫سال‬ ‫در‬
2016
http://www.php-fig.org/members/
PHP Standards Recommendations
PSR-0(DEPRECATED) Autoloading
PSR-1 Basic coding standard
PSR-2 Coding style
PSR-3 Logger
PSR-4 Autoloading
PSR-5(DRAFT) PHPDoc Standard
PSR-6 Caching Interface
PSR-7 HTTP Message Interface
PSR-8(DRAFT) Huggable Interface
PSR-9(DRAFT) Security Advisories
<?php
namespace SymfonyComponentHttpFoundation;
class Request
{
public static function createFromGlobals()
{
$request = self::createRequestFromFactory(
$_GET,
$_POST,
array(),
$_COOKIE,
$_FILES,
$server
);
return $request;
}
}
<?php
namespace ZendHttpPhpEnvironment;
class Request extends HttpRequest
{
public function __construct()
{
$this->setEnv(new Parameters($_ENV));
if ($_GET) {
$this->setQuery(new Parameters($_GET));
}
if ($_POST) {
$this->setPost(new Parameters($_POST));
}
if ($_COOKIE) {
$this->setCookies(new Parameters($_COOKIE));
}
if ($_FILES) {
// convert PHP $_FILES superglobal
$files = $this->mapPhpFiles();
$this->setFiles(new Parameters($files));
}
$this->setServer(new Parameters($_SERVER));
}
}
PSR-7 - Middleware - Zend Expressive
HTTP Message Interface
• PsrHttpMessageMessageInterface
o PsrHttpMessageResponseInterface
o PsrHttpMessageRequestInterface
 PsrHttpMessageServerRequestInterface
• PsrHttpMessageStreamInterface
• PsrHttpMessageUploadFileInterface
• PsrHttpMessageUriInterface
Message
ResponseRequestStream
Uploaded File Server Request URI
extends
Wrapper
Local filesystem file://
HTTP Address http:// https://
FTP ftp:// ftps://
SSL ssl:// tls://
MySQL tcp://
Zip zip://
MongoDB mongodb://
PHP php://input php://output
php://temp php://memory
<?php
file_get_contents('local_file.json');
file_get_contents('http://site.com/file.json');
Middleware
http://stackphp.com/
https://zend-expressive.readthedocs.io/en/latest/getting-started/features/
function(
RequestInterface $request,
ResponseInterface $response,
callable $next=null
):ReponseInterface
<?php
namespace Mine;
class XClacksOverhead
{
public function __invoke($request, $response, $next)
{
$response = $next($request, $response);
return $response->withHeader(
'X-Clacks-Overhead',
'GNU Terry Pratchett'
);
}
}
Zend Framework
https://github.com/zendframework
zend-diactoros
https://github.com/zendframework/zend-diactoros
PSR-7 HTTP Message implementation
zend-stratigility
https://github.com/zendframework/zend-stratigility
Middleware for PHP built on top of PSR-7
Zend Expressive
•Routing interface
•CountainerInterface
•Templating Interfaceoptional
•Error handlingoptional
composer create-project zendframework/zend-expressive-skeleton
PSR-7 - Middleware - Zend Expressive
 ZendExpressiveRouterRouterInterface
• public function addRoute(Route $route);
• public function match(Request $request);
• public function generateUri($name, array $substitutions = []);
 InteropContainerContainerInterface
• public function get($id);
• public function has($id);
 ZendExpressiveTemplateTemplateRendererInterface
• public function render($name, $params = []);
• public function addPath($path, $namespace = null);
• public function getPaths();
• public function addDefaultParam($templateName, $param, $value);
 ZendStratigilityFinalHandler
PSR-7 - Middleware - Zend Expressive
PSR-7 - Middleware - Zend Expressive
.1‫از‬ ‫استفاده‬ ‫با‬ ‫نصب‬composer
.2‫تعریف‬VirtualHost
.3‫فایل‬ ‫ویرایش‬hosts‫ویندوز‬
PSR-7 - Middleware - Zend Expressive
Invokable Factory
<?php
class iClass
{
public function method1()
{
return time();
}
}
<?php
class fClass
{
private $adapter;
public function __construct($adapter)
{
$this->adapter=$adapter;
}
public function method1()
{
return $this
->adapter
->someMethod();
}
}
//--------------------------
class fClassFactory
{
public function __invoke()
{
$adapter=new NSAdapterClass;
return new fClass($adapter);
}
}
https://github.com/ooghry/Zend-Expressive-CoderConf
composer require zendframework/zend-db
config/autoload/db.global.php
config/autoload/db.local.php
config/autoload/routes.global.php
[
'name' => 'user.list',
'path' => '/list',
'middleware'=>AppActionListAction::class,
'allowed_methods' => ['GET'],
],
templates/app/list.html.twig
AppActionListAction
AppActionListActionFactory
<?php
namespace AppAction;
use InteropContainerContainerInterface;
use ZendDbAdapterAdapterInterface;
use ZendExpressiveTemplateTemplateRendererInterface;
class ListActionFactory
{
public function __invoke(ContainerInterface $container)
{
$template = ($container->has(TemplateRendererInterface::class))
? $container->get(TemplateRendererInterface::class)
: null;
$adapter = ($container->has(AdapterInterface::class))
? $container->get(AdapterInterface::class)
: null;
return new ListAction($template,$adapter);
}
}
<?php
namespace AppAction;
use ...
class ListAction
{
private $adapter;
private $template;
public function __construct(TemplateRendererInterface $template, $adapter)
{
$this->adapter = $adapter;
$this->template = $template;
}
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next = null
){
$statement = $this->adapter->query('select * from profile');
$users = $statement->execute();
return new HtmlResponse(
$this->template->render('app::list', ['users' => $users])
);
}
}
PSR-7 - Middleware - Zend Expressive
<?php
namespace AppAction;
use ZendDiactorosResponseJsonResponse;
use PsrHttpMessageResponseInterface;
use PsrHttpMessageServerRequestInterface;
class PingAction
{
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next = null)
{
return new JsonResponse(['ack' => time()]);
}
}
PSR-7 - Middleware - Zend Expressive
config/autoload/middleware-pipeline.global.php
'always' => [
'middleware' => [
HelperServerUrlMiddleware::class,
AppMiddlewareAuthMiddleware::class,
],
'priority' => PHP_INT_MAX,
],
config/autoload/dependencies.global.php
'factories' => [
AppMiddlewareAuthMiddleware::class => AppMiddlewareAuthMiddlewareFactory::class,
],
App
Auth
src/App/Middleware/AuthMiddleware.php
<?php
namespace AppMiddleware;
use ...
class AuthMiddleware
{
private $helper;
public function __construct(UrlHelper $helper)
{
$this->helper=$helper;
}
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next = null)
{
if($this->helper->generate('api.ping')!=$request->getUri()->getPath()) {
$auth = $this->parseAuth($request->getHeaderLine('Authorization'));
if (!$auth or !$this->checkUserPass($auth['user'], $auth['pass'])) {
return $response
->withHeader('WWW-Authenticate', 'Basic realm=""')
->withStatus(401);
}
}
$response = $next($request, $response);
return $response;
}
}
Download Middleware
config/autoload/routes.global.php
[
'name' => 'download',
'path' => '/download/{file:[_0-9a-zA-Z-]+.w{1,}}',
'middleware' => AppActionDownloadAction::class,
'allowed_methods' => ['GET'],
],
AppActionDownloadAction
class DownloadAction
{
public function __invoke($request, $response, $next = null)
{
$file='data'.$request->getUri()->getPath();
if(is_readable($file)){
return $response
->write(file_get_contents($file))
->withHeader(
'Content-Disposition',
'inline; filename="' . pathinfo($file,PATHINFO_BASENAME) . '"'
)
->withHeader('Content-type',pathinfo($file,PATHINFO_EXTENSION))
->withStatus(200);
}else{
return $next($request, $response);
}
}
}
PSR-7 - Middleware - Zend Expressive
App
Auth
Unavailable
config/autoload/middleware-pipeline.global.php
'middleware' => [
HelperServerUrlMiddleware::class,
AppMiddlewareUnavailableMiddleware::class,
AppMiddlewareAuthMiddleware::class,
],
AppMiddlewareUnavailableMiddleware
public function __invoke($request, $response, callable $next = null)
{
if (date('G') == '23' || (date('G') == '0' && date('i') < '30')) {
return new HtmlResponse($this->template->render('app::unavailable'));
}
$response = $next($request, $response);
return $response;
}
AppMiddlewareUnavailableMiddlewareFactory
templates/app/unavailable.html.twig
config/autoload/dependencies.global.php
PSR-7 - Middleware - Zend Expressive
‫متشکرم‬
PSR-7‫و‬middleware-‫معرفی‬ ‫و‬ ‫ها‬Zend Expressive
‫عربی‬ ‫میالد‬
milad.arabi@gmail.com
@ooghry
Linkedin
https://github.com/ooghry/Zend-Expressive-CoderConf
Ad

More Related Content

What's hot (20)

PHP Development Tools
PHP  Development ToolsPHP  Development Tools
PHP Development Tools
Antony Abramchenko
 
PHP7 - The New Engine for old good train
PHP7 - The New Engine for old good trainPHP7 - The New Engine for old good train
PHP7 - The New Engine for old good train
Xinchen Hui
 
30 Minutes To CPAN
30 Minutes To CPAN30 Minutes To CPAN
30 Minutes To CPAN
daoswald
 
Getting started with Perl XS and Inline::C
Getting started with Perl XS and Inline::CGetting started with Perl XS and Inline::C
Getting started with Perl XS and Inline::C
daoswald
 
A brief to PHP 7.3
A brief to PHP 7.3A brief to PHP 7.3
A brief to PHP 7.3
Xinchen Hui
 
Php internal architecture
Php internal architecturePhp internal architecture
Php internal architecture
Elizabeth Smith
 
Modern Web Development with Perl
Modern Web Development with PerlModern Web Development with Perl
Modern Web Development with Perl
Dave Cross
 
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for BeginnersNinja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
Chang W. Doh
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
Diego Freniche Brito
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
Shengyou Fan
 
Apigility – Lightning Fast API Development - OSSCamp 2014
Apigility – Lightning Fast API Development - OSSCamp 2014 Apigility – Lightning Fast API Development - OSSCamp 2014
Apigility – Lightning Fast API Development - OSSCamp 2014
OSSCube
 
Modern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real WorldModern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real World
SATOSHI TAGOMORI
 
Functional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented ProgrammersFunctional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented Programmers
Diego Freniche Brito
 
PHP from soup to nuts Course Deck
PHP from soup to nuts Course DeckPHP from soup to nuts Course Deck
PHP from soup to nuts Course Deck
rICh morrow
 
Getting started with Catalyst and extjs
Getting started with Catalyst and extjsGetting started with Catalyst and extjs
Getting started with Catalyst and extjs
Peter Edwards
 
Practical catalyst
Practical catalystPractical catalyst
Practical catalyst
dwm042
 
How to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rbHow to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rb
Hiroshi SHIBATA
 
Behat Workshop at WeLovePHP
Behat Workshop at WeLovePHPBehat Workshop at WeLovePHP
Behat Workshop at WeLovePHP
Marcos Quesada
 
Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)
Kousuke Ebihara
 
Building an API with Django and Django REST Framework
Building an API with Django and Django REST FrameworkBuilding an API with Django and Django REST Framework
Building an API with Django and Django REST Framework
Christopher Foresman
 
PHP7 - The New Engine for old good train
PHP7 - The New Engine for old good trainPHP7 - The New Engine for old good train
PHP7 - The New Engine for old good train
Xinchen Hui
 
30 Minutes To CPAN
30 Minutes To CPAN30 Minutes To CPAN
30 Minutes To CPAN
daoswald
 
Getting started with Perl XS and Inline::C
Getting started with Perl XS and Inline::CGetting started with Perl XS and Inline::C
Getting started with Perl XS and Inline::C
daoswald
 
A brief to PHP 7.3
A brief to PHP 7.3A brief to PHP 7.3
A brief to PHP 7.3
Xinchen Hui
 
Php internal architecture
Php internal architecturePhp internal architecture
Php internal architecture
Elizabeth Smith
 
Modern Web Development with Perl
Modern Web Development with PerlModern Web Development with Perl
Modern Web Development with Perl
Dave Cross
 
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for BeginnersNinja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
Chang W. Doh
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
Diego Freniche Brito
 
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南[Community Open Camp] 給 PHP 開發者的 VS Code 指南
[Community Open Camp] 給 PHP 開發者的 VS Code 指南
Shengyou Fan
 
Apigility – Lightning Fast API Development - OSSCamp 2014
Apigility – Lightning Fast API Development - OSSCamp 2014 Apigility – Lightning Fast API Development - OSSCamp 2014
Apigility – Lightning Fast API Development - OSSCamp 2014
OSSCube
 
Modern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real WorldModern Black Mages Fighting in the Real World
Modern Black Mages Fighting in the Real World
SATOSHI TAGOMORI
 
Functional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented ProgrammersFunctional Programming for Busy Object Oriented Programmers
Functional Programming for Busy Object Oriented Programmers
Diego Freniche Brito
 
PHP from soup to nuts Course Deck
PHP from soup to nuts Course DeckPHP from soup to nuts Course Deck
PHP from soup to nuts Course Deck
rICh morrow
 
Getting started with Catalyst and extjs
Getting started with Catalyst and extjsGetting started with Catalyst and extjs
Getting started with Catalyst and extjs
Peter Edwards
 
Practical catalyst
Practical catalystPractical catalyst
Practical catalyst
dwm042
 
How to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rbHow to develop Jenkins plugin using to ruby and Jenkins.rb
How to develop Jenkins plugin using to ruby and Jenkins.rb
Hiroshi SHIBATA
 
Behat Workshop at WeLovePHP
Behat Workshop at WeLovePHPBehat Workshop at WeLovePHP
Behat Workshop at WeLovePHP
Marcos Quesada
 
Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)Let's creating your own PHP (tejimaya version)
Let's creating your own PHP (tejimaya version)
Kousuke Ebihara
 
Building an API with Django and Django REST Framework
Building an API with Django and Django REST FrameworkBuilding an API with Django and Django REST Framework
Building an API with Django and Django REST Framework
Christopher Foresman
 

Viewers also liked (20)

20151030 富士通SS研 講演予定資料 @ 神戸
20151030 富士通SS研 講演予定資料 @ 神戸20151030 富士通SS研 講演予定資料 @ 神戸
20151030 富士通SS研 講演予定資料 @ 神戸
Taichi Furuhashi
 
Creatividad e-innovación-en-tiempos-de-crisis-final
Creatividad e-innovación-en-tiempos-de-crisis-finalCreatividad e-innovación-en-tiempos-de-crisis-final
Creatividad e-innovación-en-tiempos-de-crisis-final
Farid Mokhtar Noriega
 
GSU MBA Leadership Speaker Series
GSU MBA Leadership Speaker SeriesGSU MBA Leadership Speaker Series
GSU MBA Leadership Speaker Series
Nancy Chorpenning
 
Atlanta Women Entrepreneurs
Atlanta Women EntrepreneursAtlanta Women Entrepreneurs
Atlanta Women Entrepreneurs
Nancy Chorpenning
 
すごい災害対応訓練2014浦安 事前説明
すごい災害対応訓練2014浦安 事前説明すごい災害対応訓練2014浦安 事前説明
すごい災害対応訓練2014浦安 事前説明
Taichi Furuhashi
 
20110524 google earthの最前線
20110524 google earthの最前線20110524 google earthの最前線
20110524 google earthの最前線
Taichi Furuhashi
 
The 10 Unbreakable Laws Of Social Media
The 10 Unbreakable Laws Of Social MediaThe 10 Unbreakable Laws Of Social Media
The 10 Unbreakable Laws Of Social Media
Social Caffeine
 
How2 openstreetmap gettingstarted
How2 openstreetmap gettingstartedHow2 openstreetmap gettingstarted
How2 openstreetmap gettingstarted
Taichi Furuhashi
 
六合彩,香港六合彩 » SlideShare
六合彩,香港六合彩 » SlideShare六合彩,香港六合彩 » SlideShare
六合彩,香港六合彩 » SlideShare
msxuecqm
 
Popis usluga iz sustava javne nabave
Popis usluga iz sustava javne nabavePopis usluga iz sustava javne nabave
Popis usluga iz sustava javne nabave
Komunalne usluge Djurdjevac d.o.o.
 
Berninipp
BerninippBerninipp
Berninipp
guest73e8da
 
Leadership for Women Business Owners
Leadership for Women Business OwnersLeadership for Women Business Owners
Leadership for Women Business Owners
Nancy Chorpenning
 
20131019 青年土地家屋調査士 全国大会講演資料 2013
20131019 青年土地家屋調査士 全国大会講演資料 201320131019 青年土地家屋調査士 全国大会講演資料 2013
20131019 青年土地家屋調査士 全国大会講演資料 2013
Taichi Furuhashi
 
NENV Design Studio 2014 F - 湖畔で学ベンチ
NENV Design Studio 2014 F - 湖畔で学ベンチNENV Design Studio 2014 F - 湖畔で学ベンチ
NENV Design Studio 2014 F - 湖畔で学ベンチ
Taichi Furuhashi
 
FOSS4G Tokyo 2011: THE UNIFORM PROJECT
FOSS4G Tokyo 2011: THE UNIFORM PROJECTFOSS4G Tokyo 2011: THE UNIFORM PROJECT
FOSS4G Tokyo 2011: THE UNIFORM PROJECT
Taichi Furuhashi
 
12 17 08 Creating A Blog
12 17 08 Creating A Blog12 17 08 Creating A Blog
12 17 08 Creating A Blog
Judy Kammerer
 
Molome infrastructure
Molome infrastructureMolome infrastructure
Molome infrastructure
Jirayut Nimsaeng
 
Library Media And Technology Services
Library Media And Technology ServicesLibrary Media And Technology Services
Library Media And Technology Services
Donna Young
 
20151030 富士通SS研 講演予定資料 @ 神戸
20151030 富士通SS研 講演予定資料 @ 神戸20151030 富士通SS研 講演予定資料 @ 神戸
20151030 富士通SS研 講演予定資料 @ 神戸
Taichi Furuhashi
 
Creatividad e-innovación-en-tiempos-de-crisis-final
Creatividad e-innovación-en-tiempos-de-crisis-finalCreatividad e-innovación-en-tiempos-de-crisis-final
Creatividad e-innovación-en-tiempos-de-crisis-final
Farid Mokhtar Noriega
 
GSU MBA Leadership Speaker Series
GSU MBA Leadership Speaker SeriesGSU MBA Leadership Speaker Series
GSU MBA Leadership Speaker Series
Nancy Chorpenning
 
すごい災害対応訓練2014浦安 事前説明
すごい災害対応訓練2014浦安 事前説明すごい災害対応訓練2014浦安 事前説明
すごい災害対応訓練2014浦安 事前説明
Taichi Furuhashi
 
20110524 google earthの最前線
20110524 google earthの最前線20110524 google earthの最前線
20110524 google earthの最前線
Taichi Furuhashi
 
The 10 Unbreakable Laws Of Social Media
The 10 Unbreakable Laws Of Social MediaThe 10 Unbreakable Laws Of Social Media
The 10 Unbreakable Laws Of Social Media
Social Caffeine
 
How2 openstreetmap gettingstarted
How2 openstreetmap gettingstartedHow2 openstreetmap gettingstarted
How2 openstreetmap gettingstarted
Taichi Furuhashi
 
六合彩,香港六合彩 » SlideShare
六合彩,香港六合彩 » SlideShare六合彩,香港六合彩 » SlideShare
六合彩,香港六合彩 » SlideShare
msxuecqm
 
Leadership for Women Business Owners
Leadership for Women Business OwnersLeadership for Women Business Owners
Leadership for Women Business Owners
Nancy Chorpenning
 
20131019 青年土地家屋調査士 全国大会講演資料 2013
20131019 青年土地家屋調査士 全国大会講演資料 201320131019 青年土地家屋調査士 全国大会講演資料 2013
20131019 青年土地家屋調査士 全国大会講演資料 2013
Taichi Furuhashi
 
NENV Design Studio 2014 F - 湖畔で学ベンチ
NENV Design Studio 2014 F - 湖畔で学ベンチNENV Design Studio 2014 F - 湖畔で学ベンチ
NENV Design Studio 2014 F - 湖畔で学ベンチ
Taichi Furuhashi
 
FOSS4G Tokyo 2011: THE UNIFORM PROJECT
FOSS4G Tokyo 2011: THE UNIFORM PROJECTFOSS4G Tokyo 2011: THE UNIFORM PROJECT
FOSS4G Tokyo 2011: THE UNIFORM PROJECT
Taichi Furuhashi
 
12 17 08 Creating A Blog
12 17 08 Creating A Blog12 17 08 Creating A Blog
12 17 08 Creating A Blog
Judy Kammerer
 
Library Media And Technology Services
Library Media And Technology ServicesLibrary Media And Technology Services
Library Media And Technology Services
Donna Young
 
Ad

Similar to PSR-7 - Middleware - Zend Expressive (20)

Website designing company_in_delhi_phpwebdevelopment
Website designing company_in_delhi_phpwebdevelopmentWebsite designing company_in_delhi_phpwebdevelopment
Website designing company_in_delhi_phpwebdevelopment
Css Founder
 
Unit 5-PHP Declaring variables, data types, array, string, operators, Expres...
Unit 5-PHP  Declaring variables, data types, array, string, operators, Expres...Unit 5-PHP  Declaring variables, data types, array, string, operators, Expres...
Unit 5-PHP Declaring variables, data types, array, string, operators, Expres...
DRambabu3
 
Starting Out With PHP
Starting Out With PHPStarting Out With PHP
Starting Out With PHP
Mark Niebergall
 
Ran Mizrahi - Symfony2 meets Drupal8
Ran Mizrahi - Symfony2 meets Drupal8Ran Mizrahi - Symfony2 meets Drupal8
Ran Mizrahi - Symfony2 meets Drupal8
Ran Mizrahi
 
Wt unit 4 server side technology-2
Wt unit 4 server side technology-2Wt unit 4 server side technology-2
Wt unit 4 server side technology-2
PUNE VIDYARTHI GRIHA'S COLLEGE OF ENGINEERING, NASHIK
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHP
Eric Johnson
 
Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018
Adam Tomat
 
Improving qa on php projects
Improving qa on php projectsImproving qa on php projects
Improving qa on php projects
Michelangelo van Dam
 
Basics PHP
Basics PHPBasics PHP
Basics PHP
Alokin Software Pvt Ltd
 
Getting up and running with Zend Framework
Getting up and running with Zend FrameworkGetting up and running with Zend Framework
Getting up and running with Zend Framework
Mohammad Shoriful Islam Ronju
 
Getting up & running with zend framework
Getting up & running with zend frameworkGetting up & running with zend framework
Getting up & running with zend framework
Saidur Rahman
 
Using the new WordPress REST API
Using the new WordPress REST APIUsing the new WordPress REST API
Using the new WordPress REST API
Caldera Labs
 
Becoming a better WordPress Developer
Becoming a better WordPress DeveloperBecoming a better WordPress Developer
Becoming a better WordPress Developer
Joey Kudish
 
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)
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)
James Titcumb
 
LAB PHP Consolidated.ppt
LAB PHP Consolidated.pptLAB PHP Consolidated.ppt
LAB PHP Consolidated.ppt
YasirAhmad80
 
Php
PhpPhp
Php
zalatarunk
 
Phphacku iitd
Phphacku iitdPhphacku iitd
Phphacku iitd
Sorabh Jain
 
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Mike Schinkel
 
Unit 4-6 sem 7 Web Technologies.pptx
Unit 4-6 sem 7    Web  Technologies.pptxUnit 4-6 sem 7    Web  Technologies.pptx
Unit 4-6 sem 7 Web Technologies.pptx
prathameshp9922
 
HackU PHP and Node.js
HackU PHP and Node.jsHackU PHP and Node.js
HackU PHP and Node.js
souridatta
 
Website designing company_in_delhi_phpwebdevelopment
Website designing company_in_delhi_phpwebdevelopmentWebsite designing company_in_delhi_phpwebdevelopment
Website designing company_in_delhi_phpwebdevelopment
Css Founder
 
Unit 5-PHP Declaring variables, data types, array, string, operators, Expres...
Unit 5-PHP  Declaring variables, data types, array, string, operators, Expres...Unit 5-PHP  Declaring variables, data types, array, string, operators, Expres...
Unit 5-PHP Declaring variables, data types, array, string, operators, Expres...
DRambabu3
 
Ran Mizrahi - Symfony2 meets Drupal8
Ran Mizrahi - Symfony2 meets Drupal8Ran Mizrahi - Symfony2 meets Drupal8
Ran Mizrahi - Symfony2 meets Drupal8
Ran Mizrahi
 
Introduction to PHP - SDPHP
Introduction to PHP - SDPHPIntroduction to PHP - SDPHP
Introduction to PHP - SDPHP
Eric Johnson
 
Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018Supercharging WordPress Development in 2018
Supercharging WordPress Development in 2018
Adam Tomat
 
Getting up & running with zend framework
Getting up & running with zend frameworkGetting up & running with zend framework
Getting up & running with zend framework
Saidur Rahman
 
Using the new WordPress REST API
Using the new WordPress REST APIUsing the new WordPress REST API
Using the new WordPress REST API
Caldera Labs
 
Becoming a better WordPress Developer
Becoming a better WordPress DeveloperBecoming a better WordPress Developer
Becoming a better WordPress Developer
Joey Kudish
 
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)
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)
James Titcumb
 
LAB PHP Consolidated.ppt
LAB PHP Consolidated.pptLAB PHP Consolidated.ppt
LAB PHP Consolidated.ppt
YasirAhmad80
 
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Hardcore URL Routing for WordPress - WordCamp Atlanta 2014 (PPT)
Mike Schinkel
 
Unit 4-6 sem 7 Web Technologies.pptx
Unit 4-6 sem 7    Web  Technologies.pptxUnit 4-6 sem 7    Web  Technologies.pptx
Unit 4-6 sem 7 Web Technologies.pptx
prathameshp9922
 
HackU PHP and Node.js
HackU PHP and Node.jsHackU PHP and Node.js
HackU PHP and Node.js
souridatta
 
Ad

Recently uploaded (20)

Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and CollaborateMeet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Maxim Salnikov
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Not So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java WebinarNot So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java Webinar
Tier1 app
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025
mu394968
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and CollaborateMeet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Maxim Salnikov
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
Not So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java WebinarNot So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java Webinar
Tier1 app
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025
mu394968
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Requirements in Engineering AI- Enabled Systems: Open Problems and Safe AI Sy...
Lionel Briand
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Kubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptxKubernetes_101_Zero_to_Platform_Engineer.pptx
Kubernetes_101_Zero_to_Platform_Engineer.pptx
CloudScouts
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 

PSR-7 - Middleware - Zend Expressive