☰
-
Php 95
-
Java 94
-
Javascript 37
-
Regex 18
-
Git 17
-
Security 16
-
Docker 07
-
Python 58
-
Machine Learning 14
-
Book Highlights
Php
/
Modern Php
- 1 Basics 5
-
Quotes S
-
Constants S
-
Control structures S
-
Reference S
-
Number systems S
- 2 Variables 4
-
Definition S
-
Variable variable S
-
Exists S
-
Type casting S
- 3 Operators 5
-
Aritmetic S
-
Bitwise S
-
String S
-
Comparison S
-
Logical S
- 4 Function 4
-
Definition S
-
Anonymous S
-
Reference S
-
Variable arguments S
- 5 Array 7
-
Basics S
-
Operations S
-
Create S
-
Search S
-
Modify S
-
Sort S
-
Storage S
- 6 String 9
-
Basics
-
Compare
-
Search
-
Replace
-
Format
-
Regexp
-
Parse
-
Formating
-
Json
- 7 Streams 6
-
File open
-
Read file
-
Read csv
-
File contents
-
Context
-
Ob_start
- 8 Oop 6
-
Object instantiation S
-
Class constructor
-
Interfaces, abstract
-
Resource visibility
-
Class constants
-
Namespaces
- 9 Features 9
-
Autoload
-
Class reflection
-
Magic methods
-
Exceptions S
-
Late static binding
-
Type hinting
-
SPL
-
PHPUNIT
-
PHAR
- 10 Versions 2
-
Php7.4 S
-
Php8.0 S
- 11 Http 4
-
Headers
-
File Uploads
-
Cookies
-
Sessions
- 12 Design Patterns 4
-
Singleton Pattern S
-
Observer Pattern
-
Strategy Pattern
-
Registry
- 13 Modern Php 8
-
Composer S
-
Slim Framework
-
Autoloader
-
Package
-
Releases
-
Generators
-
Dependency Injection
-
Middleware
- 14 Create Framework 7
-
App
-
Http Foundation
-
Front Controller
-
Routing
-
Render Controller
-
Resolver
-
SoC
- 15 Frameworks 4
-
Symfony v5
-
Laravel v8
-
Laminas v3
-
Codeigniter v4
- 16 Composer 5
-
Guzzle
-
Carbon
-
Faker
-
Math
-
Requests
- 17 Symfony 6
-
Routes S
-
Annotations
-
Flex
-
Controllers
-
Doctrine
-
Templating
R
Q
Middleware
An application is like an onion with different layers. The middleware is each layer receiving the request, do something with it, and then pass it to the next layer or send it back to the layer above it.Routing
A router uses information from the request and figure out which class to handle. We'll use a popular router library (fast-route). We'll also need a middleware dispatcher (relay). PSR-15 spec requires implementations to pass along PSR-7 (laminas-diactoros).
// use setup from previous Dependencies Injection page
cd /var/www/php/noframework
composer require relay/relay
composer require laminas/laminas-diactoros
composer require middlewares/fast-route middlewares/request-handler
We define the route for our Hello World example.
For this to work we also need to make HelloWorld an invokable class.
// /public/index.php
declare(strict_types=1);
use ExampleApp\HelloWorld;
require_once __DIR__.'/../vendor/autoload.php';
use Relay\Relay; // middleware dispatcher
use Laminas\Diactoros\ServerRequestFactory; // PSR-7 compatibility
use Middlewares\FastRoute; // middleware
use Middlewares\RequestHandler;
use FastRoute\RouteCollector; // router
use function FastRoute\simpleDispatcher;
$routes = simpleDispatcher(function(RouteCollector $r) {
$r->get('/public/hello', HelloWorld::class);
});
$middlewareQueue[] = new FastRoute($routes);
$middlewareQueue[] = new RequestHandler();
$requestHandler = new Relay($middlewareQueue);
$requestHandler->handle(ServerRequestFactory::fromGlobals());
// /src/HelloWorld.php
declare(strict_types=1);
namespace ExampleApp;
class HelloWorld
{
public function __invoke() : void
{
echo 'Hello World, from routes';
exit;
}
}
// http://localhost:8080/public/hello
// Hello World, from routes!
➥ Questions
Last update: 466 days ago