<time>1684501200</time><short>19/5/23</short><long>Friday, May 19, 2023 3:00:00 PM</long>
unread
4 : KrISS aaaa : middleware
tontof
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 <a href="https://github.com/kriss/mvvm">KrISS MVVM</a> qui est une sorte de projet générique pour développer rapidement des petites applications en utlisant la programmation orientée objet, <a href="https://github.com/kriss/aaaa">KrISS aaaa</a> 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.<br />
<br />
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...<br />
<br />
Voici donc une première présentation de middleware qui correspond au principe de la couche d'oignon illustré dans cet article : <a href="http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/">http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/</a> mais en programmation fonctionnelle :<br />
<code><span style="color: #000000"><br />
<span style="color: #0000BB"><?php </span><span style="color: #007700">include(</span><span style="color: #DD0000">'src/helpers/middleware/middleware.php'</span><span style="color: #007700">);<br />
<br />
function </span><span style="color: #0000BB">before</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">, </span><span style="color: #0000BB">$next</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'before'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$next</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br />
}<br />
<br />
function </span><span style="color: #0000BB">after</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">, </span><span style="color: #0000BB">$next</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object </span><span style="color: #007700">= </span><span style="color: #0000BB">$next</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'after'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$object</span><span style="color: #007700">;<br />
}<br />
<br />
function </span><span style="color: #0000BB">core</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'core'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$object</span><span style="color: #007700">;<br />
}<br />
<br />
</span><span style="color: #0000BB">$middleware </span><span style="color: #007700">= </span><span style="color: #0000BB">middleware</span><span style="color: #007700">([</span><span style="color: #DD0000">'after'</span><span style="color: #007700">, </span><span style="color: #DD0000">'before'</span><span style="color: #007700">, </span><span style="color: #DD0000">'after'</span><span style="color: #007700">, </span><span style="color: #DD0000">'before'</span><span style="color: #007700">], </span><span style="color: #DD0000">'core'</span><span style="color: #007700">);<br />
<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$middleware</span><span style="color: #007700">());<br />
</span><span style="color: #0000BB">?></span><br />
</span><br />
</code>Le résultat est le suivant<br />
<code><br />
array(5) {<br />
[0] =><br />
string(6) "before"<br />
[1] =><br />
string(6) "before"<br />
[2] =><br />
string(4) "core"<br />
[3] =><br />
string(5) "after"<br />
[4] =><br />
string(5) "after"<br />
}<br />
</code><br />
J'imagine utilisé ce principe de middleware pour gérer des plugins dans KrISS aaaa. Plus d'exemples dans le fichier de tests : <a href="https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php">https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php</a><br />
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 <a href="https://github.com/kriss/mvvm">KrISS MVVM</a> qui est une sorte de projet générique pour développer rapidement des petites applications en utlisant la programmation orientée objet, <a href="https://github.com/kriss/aaaa">KrISS aaaa</a> 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.<br />
<br />
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...<br />
<br />
Voici donc une première présentation de middleware qui correspond au principe de la couche d'oignon illustré dans cet article : <a href="http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/">http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/</a> mais en programmation fonctionnelle :<br />
<code><span style="color: #000000"><br />
<span style="color: #0000BB"><?php </span><span style="color: #007700">include(</span><span style="color: #DD0000">'src/helpers/middleware/middleware.php'</span><span style="color: #007700">);<br />
<br />
function </span><span style="color: #0000BB">before</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">, </span><span style="color: #0000BB">$next</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'before'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$next</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br />
}<br />
<br />
function </span><span style="color: #0000BB">after</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">, </span><span style="color: #0000BB">$next</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object </span><span style="color: #007700">= </span><span style="color: #0000BB">$next</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'after'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$object</span><span style="color: #007700">;<br />
}<br />
<br />
function </span><span style="color: #0000BB">core</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'core'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$object</span><span style="color: #007700">;<br />
}<br />
<br />
</span><span style="color: #0000BB">$middleware </span><span style="color: #007700">= </span><span style="color: #0000BB">middleware</span><span style="color: #007700">([</span><span style="color: #DD0000">'after'</span><span style="color: #007700">, </span><span style="color: #DD0000">'before'</span><span style="color: #007700">, </span><span style="color: #DD0000">'after'</span><span style="color: #007700">, </span><span style="color: #DD0000">'before'</span><span style="color: #007700">], </span><span style="color: #DD0000">'core'</span><span style="color: #007700">);<br />
<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$middleware</span><span style="color: #007700">());<br />
</span><span style="color: #0000BB">?></span><br />
</span><br />
</code>Le résultat est le suivant<br />
<code><br />
array(5) {<br />
[0] =><br />
string(6) "before"<br />
[1] =><br />
string(6) "before"<br />
[2] =><br />
string(4) "core"<br />
[3] =><br />
string(5) "after"<br />
[4] =><br />
string(5) "after"<br />
}<br />
</code><br />
J'imagine utilisé ce principe de middleware pour gérer des plugins dans KrISS aaaa. Plus d'exemples dans le fichier de tests : <a href="https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php">https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php</a><br />
<name>title</name><content>4 : KrISS aaaa : middleware</content><attributes> <name>link</name><content>https://tontof.net/index.php?2023/05/19/15/00/00-4-kriss-aaaa-middleware</content><attributes> <name>description</name><content>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 <a href="https://github.com/kriss/mvvm">KrISS MVVM</a> qui est une sorte de projet générique pour développer rapidement des petites applications en utlisant la programmation orientée objet, <a href="https://github.com/kriss/aaaa">KrISS aaaa</a> 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.<br />
<br />
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...<br />
<br />
Voici donc une première présentation de middleware qui correspond au principe de la couche d'oignon illustré dans cet article : <a href="http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/">http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/</a> mais en programmation fonctionnelle :<br />
<code><span style="color: #000000"><br />
<span style="color: #0000BB"><?php </span><span style="color: #007700">include(</span><span style="color: #DD0000">'src/helpers/middleware/middleware.php'</span><span style="color: #007700">);<br />
<br />
function </span><span style="color: #0000BB">before</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">, </span><span style="color: #0000BB">$next</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'before'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$next</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br />
}<br />
<br />
function </span><span style="color: #0000BB">after</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">, </span><span style="color: #0000BB">$next</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object </span><span style="color: #007700">= </span><span style="color: #0000BB">$next</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'after'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$object</span><span style="color: #007700">;<br />
}<br />
<br />
function </span><span style="color: #0000BB">core</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'core'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$object</span><span style="color: #007700">;<br />
}<br />
<br />
</span><span style="color: #0000BB">$middleware </span><span style="color: #007700">= </span><span style="color: #0000BB">middleware</span><span style="color: #007700">([</span><span style="color: #DD0000">'after'</span><span style="color: #007700">, </span><span style="color: #DD0000">'before'</span><span style="color: #007700">, </span><span style="color: #DD0000">'after'</span><span style="color: #007700">, </span><span style="color: #DD0000">'before'</span><span style="color: #007700">], </span><span style="color: #DD0000">'core'</span><span style="color: #007700">);<br />
<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$middleware</span><span style="color: #007700">());<br />
</span><span style="color: #0000BB">?></span><br />
</span><br />
</code>Le résultat est le suivant<br />
<code><br />
array(5) {<br />
[0] =><br />
string(6) "before"<br />
[1] =><br />
string(6) "before"<br />
[2] =><br />
string(4) "core"<br />
[3] =><br />
string(5) "after"<br />
[4] =><br />
string(5) "after"<br />
}<br />
</code><br />
J'imagine utilisé ce principe de middleware pour gérer des plugins dans KrISS aaaa. Plus d'exemples dans le fichier de tests : <a href="https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php">https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php</a><br />
</content><attributes> <name>dc:date</name><content>2023-05-19T15:00:00+02:00</content><attributes> <name>dc:language</name><content>fr</content><attributes> <name>dc:creator</name><content>tontof</content><attributes> <name>dc:subject</name><content>A simple and smart (or stupid) blog</content><attributes> <name>content:encoded</name><content>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 <a href="https://github.com/kriss/mvvm">KrISS MVVM</a> qui est une sorte de projet générique pour développer rapidement des petites applications en utlisant la programmation orientée objet, <a href="https://github.com/kriss/aaaa">KrISS aaaa</a> 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.<br />
<br />
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...<br />
<br />
Voici donc une première présentation de middleware qui correspond au principe de la couche d'oignon illustré dans cet article : <a href="http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/">http://esbenp.github.io/2015/07/31/implementing-before-after-middleware/</a> mais en programmation fonctionnelle :<br />
<code><span style="color: #000000"><br />
<span style="color: #0000BB"><?php </span><span style="color: #007700">include(</span><span style="color: #DD0000">'src/helpers/middleware/middleware.php'</span><span style="color: #007700">);<br />
<br />
function </span><span style="color: #0000BB">before</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">, </span><span style="color: #0000BB">$next</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'before'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$next</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br />
}<br />
<br />
function </span><span style="color: #0000BB">after</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">, </span><span style="color: #0000BB">$next</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object </span><span style="color: #007700">= </span><span style="color: #0000BB">$next</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'after'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$object</span><span style="color: #007700">;<br />
}<br />
<br />
function </span><span style="color: #0000BB">core</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">) {<br />
</span><span style="color: #0000BB">$object</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'core'</span><span style="color: #007700">;<br />
return </span><span style="color: #0000BB">$object</span><span style="color: #007700">;<br />
}<br />
<br />
</span><span style="color: #0000BB">$middleware </span><span style="color: #007700">= </span><span style="color: #0000BB">middleware</span><span style="color: #007700">([</span><span style="color: #DD0000">'after'</span><span style="color: #007700">, </span><span style="color: #DD0000">'before'</span><span style="color: #007700">, </span><span style="color: #DD0000">'after'</span><span style="color: #007700">, </span><span style="color: #DD0000">'before'</span><span style="color: #007700">], </span><span style="color: #DD0000">'core'</span><span style="color: #007700">);<br />
<br />
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$middleware</span><span style="color: #007700">());<br />
</span><span style="color: #0000BB">?></span><br />
</span><br />
</code>Le résultat est le suivant<br />
<code><br />
array(5) {<br />
[0] =><br />
string(6) "before"<br />
[1] =><br />
string(6) "before"<br />
[2] =><br />
string(4) "core"<br />
[3] =><br />
string(5) "after"<br />
[4] =><br />
string(5) "after"<br />
}<br />
</code><br />
J'imagine utilisé ce principe de middleware pour gérer des plugins dans KrISS aaaa. Plus d'exemples dans le fichier de tests : <a href="https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php">https://github.com/KrISS/aaaa/blob/main/tests/MiddlewareTest.php</a><br />
</content><attributes>