Accueil > Développement > De l’intérêt de SPIP comme framework

De l’intérêt de SPIP comme framework

jeudi 23 octobre 2008, par cedric

Un cas concret qui montre tout l’intérêt de SPIP utilisé en framework de développement d’applications.

On le sait, une des particularités de SPIP en tant qu’outil de publication consiste en son compilateur de squelettes et de boucles.

Le langage de Boucles de SPIP a été développé au départ dans le but de faciliter l’écriture de gabarits pour les webmestre autodidactes.
En masquant la compléxité de SQL et de la structure de la base de données sous jacente derrière des instructions simples à lire et à comprendre, il facilite l’apprentissage et la modification des gabarits.

Les BOUCLES : une couche d’abstraction de SQL

Mais ce langage de boucle se trouve aussi être un redoutable outil dans le cadre de développement d’application Web.

D’un point de vue développeurs, on peut considérer qu’elles consitituent une couche d’abstraction SQL avec ses avantages :

  • indépendance vis à vis du moteur de requête SQL à partir de SPIP 2.0 (qui supporte nativement mySQL, PostrGreSQL et sQLite)
  • optimisation systématique des requêtes ; même si un bon développeur est suceptible d’optimiser manuellement ses requêtes plus efficacement, c’est toujours bon à prendre
  • cache des requêtes SQL - plus exactement ce ne sont pas les requetes SQL qui sont mises en cache, mais les pages html. Toutefois cette mise en cache permet des gains de performances significatifs, et pour certaines boucles répétitives, il est possible d’implémenter la boucle dans une inclusion dédiée, qui cachera donc le produit de la boucle
  • jointures automatisées, en particulier lorsqu’on fait l’effort de normaliser son schema de BDD avec un nommage identique des champs utilisés en jointure entre tables.

extensible...

Comme toute couche d’abstraction, elle peut être enrichie à loisir en fonction des particularités de l’application développée :

  • en définissant ses propres critères de selection
  • en définissant ses balises

Mais un des points forts qui m’a inspiré cet article, est la boucle elle même ses propriétés sous-jacentes.

Qui a pratiqué un peu le développement avec SPIP sait que toute table SQL toto est présente dans la base est directement utilisable en boucle dans un squelette, sans plus de déclaration

Ceci est rendu possible car SPIP implémente une définition générique par défaut des boucles, qui est utilisé, comme ici pour la boucle (toto) lorsque aucune définition personalisée n’a été réalisée.

et un ensemble de règles implicites...

Mais cette boucle peut aussi être vue comme un ensemble de règles implicites (par défaut vide) à appliquer à toutes les requêtes sur la table toto.

Prenons un exemple

Si demain je dois ajouter un champ statut à ma table toto qui me servira à marquer les enregistrement supprimés (car en fait, je ne veux pas vraiment les supprimer), je vais vouloir naturellement que ce champ statut soit pris en compte dans toutes les requêtes de mon application.

Avec SPIP cela peut être réalisé très simplement :

Avec ces quelques lignes, on ajoute la condition AND statut<>'poubelle' à toutes les requetes sur la table toto générées par les boucles (toto) (sauf si la boucle contient déjà explicitement une condition sur statut...)

qui améliorent la maintenabilité !

Dans une application web classique, où les requetes sql sont écrites explicitement, chacune de ces requête aurait dut être reprise à la main et être corrigé en lui ajoutant cette condition.

Appréciez le gain de temps et l’amélioration de la maintenabilité de votre application, en prenant en compte tant le temps économisé que les sources potentielles de regression évitées (chaque modification manuelle d’une requête étant potentiellement un nouveau bug ...)

Messages

  • et c’est pour quand la version 2 de spip ?

  • dans un contexte de syndicat intercommunal, on avait déjà fait une comparaison spip / ezpublish et la conclusion était qu’il paraissait préférable de choisir un cms capable d’être un framework de développement...

    cet article me parait donc très intéressant... car il peut conduire à étendre le domaine de spip...

    mais y-a-t-il des exemples applicatifs illustrant cette capacité ? des projets orientés interopérabilité ? car un framework, ce n’est pas qu’une couche d’abstraction SQL.... Il faudrait aussi :

     des connecteurs pour des services externes (dans le cas de spip, atom ? mais je n’ai toujours pas compris comment on peut facilement « écrire » par une application dans spip, l’ajout d’article par mail qui est possible reste frustrant...)
     une bibliothèque de fonctions, dans le cas de spip, fonctions et noisettes ? mais il y a du boulot je donne un exemple orienté tableau de bord... intégrer un cube olap et l’intégration de vue décisionnelle dans un article...
     un atelier de développement...de ce point de vue easysquelettes est un bon début, mais il me semble qu’un tel atelier devrait intégrer css et squelettes... éditer un « bloc » en l’associant à un style et à une noisette...
     ...

    bon, j’enfonce peut-être des portes ouvertes, mais la discussion m’intéresse

    S’il y a un cadre pour l’accueillir, je peux proposer un sujet de projet de fin d’étude ingénieur...

    pam

  • Bonjour,
    Qu’entendez vous par « proposer un sujet de projet de fin d’étude » ?
    Nous avec l’expérience de plusieurs projets en Spip, avec des impératifs forts en terme de disponibilité et qualité de service, je suis pour ma part un fervent supporter de Spip depuis trés longtemps, et serait tout à fait intéressé par l’organisation d’un projet ou stage.
    Pour plus d’explication, je vous propose de prendre contact.

    Bien cordialement,

    Emmanuel Valluche

  • Moi ce qui m’interesse c’est de pouvoir ajouter mes propres tables et données dans la base de spip et de l’exploiter avec le langage de SPIP ! Mais je sais pas comment « dire » au back office (espace privé), de prendre en charge l’ajout de types de données autre que l’article, la rubrique et la breve...

  • Bonjour,

    Nous sommes intéressés à mettre en place un entrepôt de données couplé à SPIP.

    Votre approche nous intéresse, avez-vous du nouveau sur ce thème ?

    Voici une amorce de notre problématique :

    Meilleurs messages

    François Daniel Giezendanner

Un message, un commentaire ?

Qui êtes-vous ?
Se connecter
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.