PHP code example of vaibhavpandeyvpz / vidyut

1. Go to this page and download the library: Download vaibhavpandeyvpz/vidyut library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

vaibhavpandeyvpz / vidyut example snippets




use Vidyut\Pipeline;
use Sandesh\ServerRequestFactory;
use Sandesh\ResponseFactory;

// Create a new pipeline
$pipeline = new Pipeline();

// Add middleware using callables
$pipeline->pipe(function ($request, $delegate) {
    if ($request->getUri()->getPath() === '/login') {
        $response = (new ResponseFactory())->createResponse();
        $response->getBody()->write('Login Page');
        return $response;
    }
    return $delegate->handle($request);
});

// Add a final handler (404)
$pipeline->pipe(function () {
    $response = (new ResponseFactory())->createResponse();
    $response->getBody()->write('Page not found');
    return $response->withStatus(404);
});

// Handle a request
$request = (new ServerRequestFactory())
    ->createServerRequest($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI'], $_SERVER);
$response = $pipeline->handle($request);

use Vidyut\Pipeline;

$pipeline = new Pipeline();

// Middleware can be callables
$pipeline->pipe(function ($request, $delegate) {
    // Process request
    $response = $delegate->handle($request);
    // Modify response
    return $response->withHeader('X-Custom', 'value');
});

// Or MiddlewareInterface instances
$pipeline->pipe(new MyMiddleware());

// Handle requests
$response = $pipeline->handle($request);

$pipeline = new Pipeline([
    function ($request, $delegate) {
        // First middleware
        return $delegate->handle($request);
    },
    function ($request, $delegate) {
        // Second middleware
        return $delegate->handle($request);
    },
    function () {
        // Final handler
        return (new ResponseFactory())->createResponse(200);
    },
]);

$pipeline->pipe(function (ServerRequestInterface $request, RequestHandlerInterface $delegate): ResponseInterface {
    // Your middleware logic
    return $delegate->handle($request);
});

class AuthenticationMiddleware implements MiddlewareInterface
{
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        // Check authentication
        if (!$this->isAuthenticated($request)) {
            return (new ResponseFactory())->createResponse(401);
        }
        return $handler->handle($request);
    }
}

$pipeline->pipe(new AuthenticationMiddleware());

$middleware = new class {
    public function handle(ServerRequestInterface $request, RequestHandlerInterface $delegate): ResponseInterface
    {
        return $delegate->handle($request);
    }
};

$pipeline->pipe([$middleware, 'handle']);

$pipeline->pipe(function ($request, $delegate) {
    // Add custom attribute
    $modifiedRequest = $request->withAttribute('user', $this->getUser($request));
    return $delegate->handle($modifiedRequest);
});

$pipeline->pipe(function ($request, $delegate) {
    $response = $delegate->handle($request);
    // Add custom header
    return $response->withHeader('X-Processed-By', 'MyMiddleware');
});

$pipeline->pipe(function () {
    // Return immediately, next middleware won't be called
    return (new ResponseFactory())->createResponse(403, 'Forbidden');
});

$pipeline = new Pipeline()
    ->pipe($middleware1)
    ->pipe($middleware2)
    ->pipe($middleware3);