PHP code example of cocoon-projet / pipe

1. Go to this page and download the library: Download cocoon-projet/pipe 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/ */

    

cocoon-projet / pipe example snippets


use Cocoon\Pipe\Pipe;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;

// Création du pipeline
$pipe = new Pipe();

// Ajout de middlewares
$pipe->add(new SecurityMiddleware())
     ->add(new AuthMiddleware())
     ->add(new LoggerMiddleware());

// Vous pouvez aussi ajouter des middlewares via leur nom de classe
$pipe->add(App\Middlewares\SecurityMiddleware::class)
     ->add(App\Middlewares\AuthMiddleware::class)
     ->add(App\Middlewares\LoggerMiddleware::class);

// Traitement d'une requête
$response = $pipe->handle($request);

class SimpleMiddleware implements MiddlewareInterface
{
    public function process(
        ServerRequestInterface $request, 
        RequestHandlerInterface $handler
    ): ResponseInterface {
        // Traitement avant
        $response = $handler->handle($request);
        // Traitement après
        return $response;
    }
}

use Cocoon\Pipe\Attribute\Priority;

#[Priority(100)]
class HighPriorityMiddleware implements MiddlewareInterface
{
    public function process(
        ServerRequestInterface $request, 
        RequestHandlerInterface $handler
    ): ResponseInterface {
        return $handler->handle($request);
    }
}

use Cocoon\Pipe\Attribute\Route;

#[Route('api/*', methods: ['GET', 'POST'])]
class ApiMiddleware implements MiddlewareInterface
{
    public function process(
        ServerRequestInterface $request, 
        RequestHandlerInterface $handler
    ): ResponseInterface {
        return $handler->handle($request);
    }
}

use Cocoon\Pipe\Conditional\ConditionalMiddlewareInterface;

class AuthMiddleware implements MiddlewareInterface, ConditionalMiddlewareInterface
{
    public function process(
        ServerRequestInterface $request, 
        RequestHandlerInterface $handler
    ): ResponseInterface {
        return $handler->handle($request);
    }

    public function shouldExecute(ServerRequestInterface $request): bool
    {
        return !$request->hasHeader('Authorization');
    }
}

#[Route('api/*')]          // Correspond à /api/users, /api/posts, etc.
#[Route('public/**')]      // Correspond à tous les sous-chemins de public/

#[Route('/^\/admin\/.*$/')]  // Correspond à tous les chemins commençant par /admin/

#[Route('api/*', methods: ['GET', 'POST'])]

use Tracy\Debugger;

// Configuration de base
Debugger::enable(Debugger::DEVELOPMENT);
Debugger::$logDirectory = __DIR__ . '/logs';

// Configuration recommandée
$logDir = __DIR__ . '/logs';
if (!is_dir($logDir)) {
    mkdir($logDir, 0777, true);
}

// Nettoyage automatique des logs
$now = time();
$maxAge = 7 * 24 * 60 * 60; // 7 jours
foreach (glob($logDir . '/*') as $file) {
    if (is_file($file) && $now - filemtime($file) >= $maxAge) {
        unlink($file);
    }
}