Jephté Clain c63ec4e294 | ||
---|---|---|
.. | ||
README.md | ||
Tag.php | ||
v.php |
README.md
nulib\web\content
un contenu de tag (ou "contag") est un type spécial de contenu permettant de gérer aussi les attributs du tag avec une syntaxe particulière.
les règles diffèrent légèrement d'un contenu classique:
- Si le contenu n'est pas un tableau:
- une chaine est quotée avec
htmlspecialchars()
- un scalaire ou une instance d'objet sont pris tels quels
- une chaine est quotée avec
- Sinon, le contenu doit être un tableau, séquentiel ou associatif
- les Closure sont appelés dès la résolution, et leur valeur de retour est inséré tel quel dans le flux
- les éléments séquentiels scalaires ou instance d'objets sont pris tels quels
- les éléments associatifs sont des attributs, et sont fusionnés le cas échéant
- les éléments séquentiels de type tableau sont évalues récursivement avec les
mêmes règles (sauf la partie chaine quotée avec
htmlspecialchars()
) - il n'y a pas de syntaxe pour les éléments dynamiques comme les contenus classiques
Par exemple, les deux contenus web suivants sont équivalents:
# ce contenu:
$content1 = [
"before",
"class" => "first",
["class" => "second"],
function() { return func($arg); },
"attr" => [
"static",
"true" => true,
"false" => false,
],
"after",
];
# donne le même résultat que:
$content2 = [
"class" => "first second",
"attr" => "static true",
"before",
...cl::with(func("arg")),
"after",
];
lors de la définition d'attributs,
- les valeurs séquentielles sont prises telles quelles
- les valeurs associatives permettent de faire des définitions conditionnelles
- les Closure sont appelés dès la résolution, et leur valeur de retour est inséré tel quel dans le flux
Par exemple, les deux contenus web suivants sont équivalents:
# ce contenu:
$content1 = [
"class" => function() { return func($arg); },
];
# donne le même résultat que:
$content2 = [
"class" => func($arg),
];
De même, les deux contenus web suivants sont équivalents:
# si $is_primary && !$is_danger
# alors ce contenu:
$content1 = [
"class" => [
"btn",
"btn-primary" => $is_primary,
"btn-danger" => $is_danger,
"btn-default" => !$is_primary && !$is_danger,
],
];
# donne le même résultat que:
$content2 = [
"class" => "btn btn-primary",
];
-- coding: utf-8 mode: markdown -- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary