# 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