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
|
||||
- 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
|
||||
considéré comme un contenu statique inséré tel quel dans le flux i.e dans
|
||||
l'exemple suivant $c1 et $c2 sont équivalents:
|
||||
considéré comme un contenu *statique* inséré tel quel dans le flux i.e dans
|
||||
l'exemple suivant $c1 et $c2 sont globalement équivalents:
|
||||
~~~php
|
||||
$closure = function() { ... }
|
||||
$c1 = [...$before, $closure, ...$after];
|
||||
$c2 = [...$before, ...c::q($closure()), ...$after];
|
||||
# la différence est que $c2 n'est évalué que lors de la résolution du
|
||||
# contenu
|
||||
# $c1 == $c2, sauf si $closure() retourne des valeurs qui peuvent être
|
||||
# considérées comme du contenu dynamique
|
||||
~~~
|
||||
- les tableaux représentent un traitement dynamique: appel de fonction,
|
||||
instanciation, etc. le contenu effectif n'est évalué que lors de l'affichage
|
||||
|
@ -28,7 +28,8 @@ Les syntaxes possibles sont:
|
|||
`[[], $args...]`
|
||||
: 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
|
||||
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...]`
|
||||
|
|
Loading…
Reference in New Issue