:-y

4 : KrISS aaaa : middleware

vendredi 19 mai 2023 - 15:00

La semaine passée était bien chargée et je n'ai pas eu le temps de partager un peu de code. Cette semaine, c'est un début de présentation d'un projet encore en cours. À l'image de KrISS MVVM qui est une sorte de projet générique pour développer rapidement des petites applications en utlisant la programmation orientée objet, KrISS aaaa a le même but mais avec l'esprit programmation fonctionnelle. À l'heure où j'écris ces lignes KrISS aaaa n'est pas vraiment opérationnel mais j'ai déjà quelques briques que je vais présenter petit à petit après avoir mis en place quelques tests pour présenter comment tout cela fonctionne.

La programmation fonctionnelle n'a plus vraiment le vent en poupe mais je pense qu'elle peut être intéressante car plus facile à comprendre que la programmation orientée objet et j'espère donc trouvé du temps pour concrétiser tout ça. J'ai même pensé mettre à jour KrISS feed en utilisant ce principe, un jour peut-être...

Voici donc une première présentation de middleware qui correspond au principe de la couche d'oignon illustré dans cet article : http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/ mais en programmation fonctionnelle :

<?php include('src/helpers/middleware/middleware.php');

function 
before($object$next) {
    
$object[] = 'before';
    return 
$next($object);
}

function 
after($object$next) {
    
$object $next($object);
    
$object[] = 'after';
    return 
$object;
}

function 
core($object) {
    
$object[] = 'core';
    return 
$object;
}

$middleware middleware(['after''before''after''before'], 'core');

var_dump($middleware());
 
?>

Le résultat est le suivant

array(5) {
[0] =>
string(6) "before"
[1] =>
string(6) "before"
[2] =>
string(4) "core"
[3] =>
string(5) "after"
[4] =>
string(5) "after"
}

J'imagine utilisé ce principe de middleware pour gérer des plugins dans KrISS aaaa. Plus d'exemples dans le fichier de tests : https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php
New comment







           ___       ___ 
|  | |  | /    |  | |    
|\ | |\ | \__  |  | |__  
| \| | \|    \ \  / |    
|  | |  | ___/  \/  |___