html.class.php 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * Classe html
  4. *
  5. * Cette classe fournit des méthodes pour générer et afficher des éléments HTML,
  6. * tels que les éléments <select> et <input>.
  7. */
  8. class html {
  9. /**
  10. * Construit le HTML d'un élément <select>.
  11. *
  12. * @param string $_config Attributs HTML du <select> sous forme de chaîne.
  13. * @param array $_options Tableau associatif des options du <select> (clé = valeur de l'option, valeur = label affiché).
  14. * @param mixed $_value Valeur sélectionnée par défaut (facultatif).
  15. * @return string Le HTML généré pour l'élément <select>.
  16. */
  17. private static function constructSelect(string $_config, array $_options, $_value = null): string {
  18. $selectHtml = '<select ' . $_config . '>';
  19. foreach ($_options as $optionValue => $label) {
  20. $selected = ($_value !== null && $_value == $optionValue) ? ' selected' : '';
  21. $selectHtml .= sprintf('<option value="%s"%s>%s</option>', htmlspecialchars($optionValue), $selected, htmlspecialchars($label));
  22. }
  23. $selectHtml .= '</select>';
  24. return $selectHtml;
  25. }
  26. /**
  27. * Renvoie le HTML d'un élément <select> sous forme de chaîne.
  28. *
  29. * @param string $_config Attributs HTML du <select> sous forme de chaîne.
  30. * @param array $_options Tableau associatif des options du <select> (clé = valeur de l'option, valeur = label affiché).
  31. * @param mixed $_value Valeur sélectionnée par défaut (facultatif).
  32. * @return string Le HTML généré pour l'élément <select>.
  33. */
  34. public static function getSelect(string $_config, array $_options, $_value = null): string {
  35. return self::constructSelect($_config, $_options, $_value);
  36. }
  37. /**
  38. * Affiche directement le HTML d'un élément <select>.
  39. *
  40. * @param string $_config Attributs HTML du <select> sous forme de chaîne.
  41. * @param array $_options Tableau associatif des options du <select> (clé = valeur de l'option, valeur = label affiché).
  42. * @param mixed $_value Valeur sélectionnée par défaut (facultatif).
  43. * @return void
  44. */
  45. public static function printSelect(string $_config, array $_options, $_value = null): void {
  46. echo self::constructSelect($_config, $_options, $_value);
  47. }
  48. /**
  49. * Construit le HTML d'un élément <input> de type texte.
  50. *
  51. * @param string $_config Attributs HTML de l'élément <input> sous forme de chaîne.
  52. * @param mixed $_value Valeur par défaut de l'élément <input> (facultatif).
  53. * @return string Le HTML généré pour l'élément <input>.
  54. */
  55. private static function constructInput(string $_config, $_value = null): string {
  56. $value = $_value !== null ? htmlspecialchars((string) $_value) : '';
  57. $inputHtml = sprintf('<input value="%s" %s />', htmlspecialchars($value), $_config);
  58. return $inputHtml;
  59. }
  60. /**
  61. * Renvoie le HTML d'un élément <input> de type texte sous forme de chaîne.
  62. *
  63. * @param string $_config Attributs HTML de l'élément <input> sous forme de chaîne.
  64. * @param mixed $_value Valeur par défaut de l'élément <input> (facultatif).
  65. * @return string Le HTML généré pour l'élément <input>.
  66. */
  67. public static function getInput(string $_config, $_value = null): string {
  68. return self::constructInput($_config, $_value);
  69. }
  70. /**
  71. * Affiche directement le HTML d'un élément <input> de type texte.
  72. *
  73. * @param string $_config Attributs HTML de l'élément <input> sous forme de chaîne.
  74. * @param mixed $_value Valeur par défaut de l'élément <input> (facultatif).
  75. * @return void
  76. */
  77. public static function printInput(string $_config, $_value = null): void {
  78. echo self::constructInput($_config, $_value);
  79. }
  80. }