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

1.9 KiB

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:

# 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:

# 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:

# 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