Storage
Finalement, après de nombreux efforts, "Storage" est fonctionnel.
Storage est un moteur de stockage backend-agnostique qui a été conçu spécialement pour Movim. Il implémente l'Active Record. Pour l'heure il supporte à la fois SQLite et Mysql, mais il peut théoriquement supporter tout type de base de données.
Le principal avantage c'est bien sûr la possibilité d'utiliser différents moyens de stockages en arrière plan sans modifier le code de Movim, mais ca permet aussi de faire rapidement et facilement des opérations sans avoir à faire quoi que ce soit de spécial pour ca.
Regardez cet exemple :
class Human extends StorageBase
{
protected $name;
protected $age;
protected function type_init()
{
$this->name = StorageType::varchar(32);
$this->age = StorageType::int();
}
}
// now we use it.
$me = new Human();
$me->name = 'Etenil';
$me->age = 43;
// saving...
$me->save();
Je sais que c'est probablement ce qui aurait pu être réalisé avec des bibliothèques comme Doctrine, cependant ca ne semblait pas très convainquant, et manquait de support pour les bases de données NoSQL. Par ailleurs, j'ai tendance à souffrir du syndrome de NMH ...
Donc, pour les futures versions, nous allons cartographier toutes les structures de stockage d'objets XMPP et jeter Cache et Session, qui seront alors inutiles.
J'ai aussi remarqué un gain incroyable de performance en utilisant MySQL à la place de SQLite, mais vous devriez le constater vous même !