modifs.mineures sans commentaires
This commit is contained in:
parent
fe4d0d8acb
commit
23b8dd7d19
|
@ -1,9 +0,0 @@
|
||||||
<?php
|
|
||||||
namespace nur\sery\php\content;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interface IStaticContent: comme {@link IContent} mais la liste retournée est
|
|
||||||
* une liste de contenu statique à analyser récursivement
|
|
||||||
*/
|
|
||||||
interface IStaticContent extends IContent {
|
|
||||||
}
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?php
|
||||||
|
namespace nur\sery\php\content;
|
||||||
|
|
||||||
|
use nur\sery\php\func;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class Printer: wrapper autour d'une instance de {@link IContent} qui affiche
|
||||||
|
* le contenu au lieu de le retourner
|
||||||
|
*
|
||||||
|
* cette classe est conçue pour wrapper des objets complexes dont le contenu est
|
||||||
|
* contruit au fur et à mesure: ainsi, les objets peuvent être utilisés tels
|
||||||
|
* quels dans un contenu, ou alors être wrappés si on veut simplement les
|
||||||
|
* afficher
|
||||||
|
*/
|
||||||
|
class Printer implements IPrintable {
|
||||||
|
function __construct(IContent $content) {
|
||||||
|
$this->content = $content;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected IContent $content;
|
||||||
|
|
||||||
|
function print(): void {
|
||||||
|
$content = $this->content->getContent();
|
||||||
|
c::write($content);
|
||||||
|
}
|
||||||
|
|
||||||
|
function __call($name, $args) {
|
||||||
|
$content = func::call([$this->content, $name], ...$args);
|
||||||
|
c::write($content);
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,14 +11,14 @@ le contenu final est résolu selon les règles suivantes:
|
||||||
d'incidence
|
d'incidence
|
||||||
- les éléments scalaires ou instance d'objets sont pris tels quels
|
- les éléments scalaires ou instance d'objets sont pris tels quels
|
||||||
- les Closure sont appelés dès la résolution, et leur valeur de retour est
|
- les Closure sont appelés dès la résolution, et leur valeur de retour est
|
||||||
considéré comme un contenu statique inséré tel quel dans le flux i.e dans
|
considéré comme un contenu *statique* inséré tel quel dans le flux i.e dans
|
||||||
l'exemple suivant $c1 et $c2 sont équivalents:
|
l'exemple suivant $c1 et $c2 sont globalement équivalents:
|
||||||
~~~php
|
~~~php
|
||||||
$closure = function() { ... }
|
$closure = function() { ... }
|
||||||
$c1 = [...$before, $closure, ...$after];
|
$c1 = [...$before, $closure, ...$after];
|
||||||
$c2 = [...$before, ...c::q($closure()), ...$after];
|
$c2 = [...$before, ...c::q($closure()), ...$after];
|
||||||
# la différence est que $c2 n'est évalué que lors de la résolution du
|
# $c1 == $c2, sauf si $closure() retourne des valeurs qui peuvent être
|
||||||
# contenu
|
# considérées comme du contenu dynamique
|
||||||
~~~
|
~~~
|
||||||
- les tableaux représentent un traitement dynamique: appel de fonction,
|
- les tableaux représentent un traitement dynamique: appel de fonction,
|
||||||
instanciation, etc. le contenu effectif n'est évalué que lors de l'affichage
|
instanciation, etc. le contenu effectif n'est évalué que lors de l'affichage
|
||||||
|
@ -28,7 +28,8 @@ Les syntaxes possibles sont:
|
||||||
`[[], $args...]`
|
`[[], $args...]`
|
||||||
: contenu statique: les valeurs $args... sont insérées dans le flux du contenu
|
: contenu statique: les valeurs $args... sont insérées dans le flux du contenu
|
||||||
sans modification. c'est la seule façon d'insérer un tableau dans la liste des
|
sans modification. c'est la seule façon d'insérer un tableau dans la liste des
|
||||||
valeurs
|
valeurs (on peut aussi utiliser une Closure, mais ce n'est pas toujours
|
||||||
|
possible, notamment si le contenu est une constante)
|
||||||
|
|
||||||
`["class_or_function", $args...]`
|
`["class_or_function", $args...]`
|
||||||
`[["class_or_function"], $args...]`
|
`[["class_or_function"], $args...]`
|
||||||
|
|
Loading…
Reference in New Issue