Programmation PHP/Exemples/MiniCMS/Modélisation

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


La modélisation se veut simple et polyvalente.

Champs de données[modifier | modifier le wikicode]

[champs contenus]

Sous customer1/contents, les champs ou "espaces de données" sont organisés en paquets d'enregistrements. D'autres modèles sont possibles.

<?xml version="1.0" encoding="UTF-8"?>
<!-- content dataChunk model -->
<crop id="" number="" scope="" links="">
    
    <topic/>
    <assert>
        <!-- HERE COMES FRONT END CODE -->
    </assert>

    <!-- Content records -->
    <fields>
        <field id="" number="" subject="">
            <topic/>
            <assert/>
            <content></content>
        </field>
    </fields>

</crop>

Distribués ou non, les paquets s'accèdent par du service pour ne pas dépendre d'un développement purement métier.


On peut opérer la distinction service / métier, en disant que le service est moins spécialisé.


La méthode d'accession aux données sera par exemple un :

  • getCropById ou byScope (prendreChampParId ou parEtendue)
  • getFieldNearSubject (prendreDonnéePrèsDuSujet)

L'id permettant une extraction directe de contenu.


[champs utilisateurs]


Même logique de service :

<?xml version="1.0" encoding="UTF-8"?>
<!-- users dataChunk model -->
<users id="" number="" links="">

   <!-- u:usr / m:mod / a:adm --> 
   <user login="" pass="" lastname="" forname="" rights="u|m|a" />

</users>

Mêmes accès que pour le modèle précédent.


[Champs page.xml]

L'indexation des pages pointeront sur des données data ou layout

<?xml version="1.0" encoding="UTF-8"?>
<pages count="4">
    <page number="1" id="standard" entry="data:1|1|rootEntry"/>
    <page number="2" id="vaisseau" entry="data:1|2|information_2"/>
    <page number="3" id="espace" entry="data:1|3|doorEntry"/>
    <page number="4" id="admin" entry="data:1|1|Error"/>
    <page number="6" id="potiron" entry="data:1|1|content" num="5"/>
    <page number="7" id="er" entry="e"/>
    <page number="8" id="terere" entry="re"/>
</pages>


[Champs templates]

La version suivante a une complétion par points d'ancrages. Cette version va orienter le projet.


L'autorisation de snippets php exécutables rendra possible l'intégration coté client (customer). L'adjonction du contenu à l'output se faisant par injection aux points d'ancrage {{inc:nomDeCle[idDeCle]}} par la méthode servant à compléter le flux avant sa sortie, comme :

  • getFeedByTagName ou getPartByName ...
  • incomes(header/content) à l'injection

Le contenu peut être sorti coté php ou ajaxifié comme ici par le javascript de fin de flux (frameset/content) feedContent().