Jeedom Core

ajax
in package

Gère les réponses AJAX de Jeedom

Tags
note

Évolutions possibles et compatibles Cette classe pourrait être enrichie progressivement avec :

  • Une interface ResponseFormatterInterface pour supporter différents formats (json, xml...)
  • Un système de middleware pour la validation des entrées
  • Des codes d'erreur HTTP standards via une énumération Ces changements peuvent être implémentés graduellement sans casser l'existant
example

Utilisation actuelle

ajax::init(['getInfos']);
ajax::success($data);
example

Utilisation future possible

// Même API, plus de fonctionnalités
ajax::init(['getInfos'])
   ->withValidator(new InputValidator())
   ->withFormat(new JsonFormatter());
ajax::success($data);
see
config::class

Pour la gestion des configurations

see
log::class

Pour la gestion des logs

todo

Version 4.6 ou 5.0

  • [OPTIONNEL] Ajouter un système de middleware pour valider les entrées
  • [OPTIONNEL] Support de différents formats via interfaces
  • [COMPATIBLE] Utiliser des codes HTTP standards

Table of Contents

Methods

error()  : never
Envoie une réponse d'erreur et termine l'exécution
getResponse()  : string
Génère la réponse JSON formatée
getToken()  : string
Retourne un token (méthode non utilisée ?)
init()  : void
Initialise la réponse AJAX Configure les en-têtes HTTP et vérifie les actions autorisées en GET
success()  : never
Envoie une réponse de succès et termine l'exécution

Methods

error()

Envoie une réponse d'erreur et termine l'exécution

public static error([mixed $_data = '' ][, int $_errorCode = 0 ]) : never
Parameters
$_data : mixed = ''

Message d'erreur ou données à renvoyer

$_errorCode : int = 0

Code d'erreur

Return values
never

getResponse()

Génère la réponse JSON formatée

public static getResponse([mixed $_data = '' ][, int|null $_errorCode = null ]) : string
Parameters
$_data : mixed = ''

Données à inclure dans la réponse

$_errorCode : int|null = null

Code d'erreur (null pour une réponse de succès)

Tags
note

Architecture future Cette méthode pourrait déléguer le formatage à des classes dédiées :

  • JsonFormatter (comportement actuel)
  • XmlFormatter
  • CsvFormatter etc. La transition peut se faire graduellement en gardant le comportement par défaut
Return values
string

Réponse JSON encodée

getToken()

Retourne un token (méthode non utilisée ?)

public static getToken() : string
Return values
string

Token vide

init()

Initialise la réponse AJAX Configure les en-têtes HTTP et vérifie les actions autorisées en GET

public static init([array<string|int, mixed> $_allowGetAction = array() ]) : void
Parameters
$_allowGetAction : array<string|int, mixed> = array()

Liste des actions autorisées en GET

Tags
throws
Exception

Si l'action demandée en GET n'est pas autorisée

note

Évolution possible Cette méthode pourrait retourner $this pour permettre le chaînage :

ajax::init(['action'])
    ->withValidator()
    ->withFormat();

Ce changement serait rétrocompatible

success()

Envoie une réponse de succès et termine l'exécution

public static success([mixed $_data = '' ]) : never
Parameters
$_data : mixed = ''

Données à renvoyer dans la réponse

Tags
note

Compatibilité et évolution Pour maintenir la compatibilité tout en permettant l'évolution :

  • Garder le comportement actuel par défaut
  • Permettre l'injection d'un formatter optionnel
ajax::success($data, new JsonFormatter()); // Optionnel
Return values
never

        
On this page

Search results