nur-sery/src/wip/web/content/README.md

71 lines
1.9 KiB
Markdown
Raw Normal View History

2024-06-23 15:07:50 +04:00
# nulib\web\content
un contenu web est un type spécial de contenu permettant de gérer aussi les
attributs avec une syntaxe particulière.
les règles diffèrent légèrement:
- 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
- Sinon, le contenu doit être un tableau, séquentiel ou associatif
- 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 séqentiel sont du contenu dynamique
- les éléments séquentiels de type tableau associatif sont évalues
récursivement avec les mêmes règles (sauf la partie chaine quotée avec
`htmlspecialchars()`)
Par exemple, les deux contenus web suivants sont équivalents:
~~~php
# ce contenu:
$content1 = [
"before",
"class" => "first",
["class" => "second"],
["func", "arg"],
"after",
];
# donne le même résultat que:
$content2 = [
"class" => "first second",
"before",
func("arg"),
"after",
];
~~~
lors de la définition d'attributs,
- un tableau séquentiel est un appel de fonction
- un tableau associatif permet de faire des définitions conditionnelles
Par exemple, les deux contenus web suivants sont équivalents:
~~~php
# ce contenu:
$content1 = [
["class" => ["func", "arg"]],
];
# donne le même résultat que:
$content2 = [
"class" => func("arg"),
];
~~~
De même, les deux contenus web suivants sont équivalents:
~~~php
# 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