[spip-dev] SPIP.oo : un SPIP objet

SPIP Objet

J'ai commencé à réaliser une version objet de SPIP. Pour l'instant, il s'agit principalement de conceptions à l'aide de classes, et un peu d'organisation sur le plan des répertoires. Il y a encore tres tres peu de code. Il est donc inutile de télécharger le code pour voir comment ca fonctionne, rien ne fonctionne actuellement. Parcontre, si vous vous intéressez aux techniques objets, à PHP, et que vous êtes un peu curieux, allez donc faire un tour.

Un peu de documentation est diaponible :
plusieurs diagrammes de classes,
et quelque commentaires associés, le tout soit au format OpenOffice, soit au format gif.

Vous êtes invités à participer ; les commentaires sont les bienvenus.

Vous trouverez pour l'instant les fichiers et la doc a cette adresse : http://villeneuve-tolosane.net/ marc/spip/files/ <http://villeneuve-tolosane.net/~marc/spip/files/>

J'espère que ce projet interessera le plus grand nombre.

J'espere aussi que ce projet ne blessera pas les principaux acteurs de SPIP qui ont contribué à un produit fort intéressant. Si interessant que je ne pense plus qu'à SPIP en ce moment.

      Objectifs

L'objectif premier est d'arriver a réaliser un moteur SPIP compatible avec l'existant. Par la suite, on pourra regarder du coté de l'edition des articles et du site, puis de l'administration.

Il est évidant que seul, il sera difficile d'arriver à quelque chose de concret. Cependant, même cette ébauche de conception est tout à fait utilisable ou réutilisable par tout un chacun.

url : http://villeneuve-tolosane.net/~marc/spip/article.php3=6

@ Marc Quinton <quinton@free.fr> :

SPIP Objet
J'ai commencé à réaliser une version objet de SPIP.

../..

J'espere aussi que ce projet ne blessera pas les principaux acteurs de
SPIP qui ont contribué à un produit fort intéressant.

Euh, non, je ne pense pas ; mais essaie de respecter les quelques normes
d'écriture du code décrites dans la doc, de bien expliquer ce que tu fais à
chaque étape, et d'y aller petit morceau par petit morceau, sinon on risque
de ne pas réussir à te suivre, et tu auras provoqué un fork.

Il est évident que SPIP a été conçu comme un ensemble d'"objets" (auteurs,
articles, brèves, mots-clés, etc.) qui interagissent entre eux, qui ont des
règles de fonctionnement internes (gestion de droits notamment) qu'on
s'évertue à faire respecter par les différents scripts de l'espace privé...

A priori, donc, une programmation objet serait plus fidèle à l'"esprit spip"
que le code actuel, et permettrait probablement de lui faire franchir le cap
du "passage à l'échelle". Seul problème : je ne maîtrise pas la
programmation objet (et ça n'est pas un objectif dans ma vie). Je pense
qu'ARNO* est dans le même cas.

Autre 'hic' : un SPIP objet permettrait de changer trop facilement les
règles de l'espace privé, pour y ajouter un tas de niveaux hiérarchiques de
décision, sans doute pour complaire à des clients qui ont besoin de chefs,
de sous-chefs, de stagiaires et de grouillots et des statuts
correspondants... et ça, bon, ça ne correspond pas tellement à notre
"programme politique" initial.

Si interessant que je ne pense plus qu'à SPIP en ce moment.

:wink:

-- Fil

Fil wrote:

A priori, donc, une programmation objet serait plus fidèle à l'"esprit spip"
que le code actuel, et permettrait probablement de lui faire franchir le cap
du "passage à l'échelle". Seul problème : je ne maîtrise pas la
programmation objet (et ça n'est pas un objectif dans ma vie). Je pense
qu'ARNO* est dans le même cas.

quels sont les principaux developpeurs de SPIP, actuels et passés ?

- Fil,
- ARNO
- ...

Marc Quinton wrote:

quels sont les principaux developpeurs de SPIP, actuels et passés ?

quelqu'un ma donné le lien suivant :

L'histoire minuscule et anecdotique de SPIP

pas si annectodique que ca a mon avis ; et comme bon nombre de logiciels libre
SPIP est passé par des hauts et des bas, des périodes de forte reflexions, des
des périodes de doute et de difficultés et pour finir des périodes de grande maturité.

pour ma part je suis en train de continuer mes petites classes SPIP. Actuellement
je suis dans un moteur qui pourrait executer du code comme ci-dessous ; pour l’instant
ca marche pas encore, mais le passage du code SPIP pur au code interprété est presque direct.

<?php error_reporting(E_ALL); include_once('SpipTemplateEngine.php'); $options = array( 'delay' => 3600 * 2 // 2 hours. ); $engine = new SpipTemplateEngine($options); ?>
**<?php $engine->boucle('rubriques', 'id_parent=0'); ?>**

dans boucle rubriques ; id = <?php $engine->current->id_article(12); ?>

<?php
echo "current object = ";
$current = &$engine->current();
print_r($current);
?>

plus tard : id = #ID_RUBRIQUE sera remplacé par le code php ci-dessus.

<?php $engine->boucle_fin(); ?>

echo "
\n";

?>

j’ai aussi ce code qui marche assez bien ; chose intéressante l’interface (API)
pour acceder aux données (rubriques, articles) sont les memes ; la gestion
des droits adresses et autre éléments de la partie privée est masqué et encapsulé
dans une classe spécialisée ; voici l’'arbre d’héritage de Articles :

  • SpipCore
    SpipObject
    SpipArticles
    SpipArticlesPublic ( where statut = ‹ publie ›)

La classe Spip est une classe centrale qui donne acces aux différents types d’objets de
SPIP (article, rubriques, breves, …). Spip et SpipAdmin sont deux classes presque identiques.
L’une est spécialisée par rapport a l’autre, et permet l’acces aux données privées. L’autre
procure un acces de type public sur les types de bases de SPIP.

Dans l’exemple ci dessous, on voit la partie puiblic que la partie privée.