Classes SydonieBase et SydonieEntity, persistance des données

De Sydonie

Structure des entités et persistance des données

Entités de base du système

Trois packages principaux contiennent les classes mères de la plupart des classes de Sydonie. Elles résident dans le namespace \Sydonie\Core :

  • SydonieBase pour tous les objets
  • SydonieEntiy pour tous les objets avec persistance des données
  • SydonieDocument pour les documents utilisant le modèle de Sydonie

SydonieBase

Ce package permet de jeter les bases du système dans divers domaines comme les actions, l'utilisation des templates, etc. Nous y reviendrons à d'autres moments. AbstractSydonieBase est associée au contrôleur SydonieBaseController et au gestionnaire d'affichage SydonieBaseUi.

SydonieEntity

C'est le package de base de toutes les entités ayant besoin d'utiliser la persistance des données. La classe AbstractSydonieEntity est donc associée au contrôleur d'objet SydonieEntityController, au gestionnaire d'affichage SydonieEntityUi, et s'y ajoute les classes SydonieEntityStorage et SydonieEntityStorageDb pour gérer la persistance des objets.

La classe AbstractSydonieEntity possède 2 propriétés $id et $confirmationStatus. Voir Créer un package de type entité ou document

Persistance des données

La persistance des données est gérée au niveau de SydonieEntity. Toutes les informations sont éclatées dans diverses tables pour pouvoir gérer tous les contenus. Un Registre (table entityRegistry) contient l'ensemble des identifiants des objets gérés par l'application, en stockant son id, la classe de l'objet (avec son namespace) et son confirmationStatus.

Obtenir un objet à partir de son id

Une méthode utilitaire permet de facilement reconstituer un objet à partir de son identifiant :

// $entity est alors un objet de la classe déclarée dans le registre
$entity = \Sydonie\Utils\Registry::getEntity($id);

Enregistrer un objet

La fonction getStorage permet d'obtenir l'enregistreur d'un objet.

// obtenir l'enregistreur et y appliquer la méthode save()
getStorage($instance)->save($instance);

Attributs d'un objet de type SydonieEntity

Afin d'avoir une base de données complètement générique et indépendante de l'application à réaliser. Pour cela, Sydonie utilise un modèle RDF-like sujet-prédicat-objet illustré ci-dessous, avec :

  • sujet est l'objet de type SydonieEntity
  • prédicat correspond au nom de la propriété de l'objet
  • objet correspond au type d'attribut associé

Modèle RDF-like des données

Voir Comment déclarer les attributs des entités ou documents

SydonieDocument

Le package SydonieDocument implémente le modèle de documents de Sydonie. Voir Le modèle de document de Sydonie, Créer un package de type entité ou document et Comment déclarer les attributs des entités ou documents