Ceci est une ancienne révision du document !


Implémentation de l'API en PHP

L'implémentation de l'API se présente sous la forme d'une série de fichiers correspondant chacun à une classe PHP. Toutes les classes et les constantes commencent par le préfixe SED_ afin de minimiser le risque de conflits de noms avec d'autres classes PHP. Ces classes sont toutes présentes dans un même répertoire appelé ScrutariDataExportLib. Cette implémentation fonctionne avec PHP 5. Elle est sous licence GPL v2.

Utilisation de l'implémentation

Pour utiliser cette implémentation, il suffit de décompresser l'archive et de faire appel au fichier class-ScrutariDataExport.php dans son code PHP, ce fichier se charge d'inclure tous les autres fichiers PHP de l'implémentation.

Tous les fichiers reprennent les noms de classe de l'API à l'exception du fichier class-XmlWriter.php qui définit la classe SED_XmlWriter. C'est une instance de cette classe qu'il faut créer tout d'abord pour indiquer la destination du code XML qui va être produit. La classe SED_XmlWriter possède un constructeur qui prend comme unique argument un pointeur vers un fichier (construit avec la fonction PHP file()). Si la valeur nulle est transmise au constructeur, le code XML sera renvoyé vers la sortie standard (fonction echo).

L'instance de SED_XmlWriter est alors passé en argument au constructeur de la classe SED_ScrutariDataExport (fichier class-ScrutariDataExport.php). Ensuite, le comportement est celui indiqué dans l'API.

Exemple d'Utilisation

<?php
/* Chargement de la bibliothèque ScrutariDataExportLib
*/
require_once("ScrutariDataExportLib/class-ScrutariDataExport.php");
 
 /* Ouverture d'un fichier en écriture
 */
$file = fopen("test.scrutari-data.xml", "w");
 
 /* Construction d'une instance SED_XmlWriter
 Pour que le code XML s'affiche dans la sortie standard, on écrirait $xmlWriter = new SED_XmlWriter(NULL);
 */
$xmlWriter = new SED_XmlWriter($file);
 
/* On inclus préalablement la déclaration XML : <?xml version="1.0" encoding="UTF-8"?>
(méthode hors API)
*/
$xmlWriter->appendDeclaration();
 
/* Construction d'une instance de SED_ScrutariDataExport qui suit l'API de ScrutariDataExport
*/
$scrutariDataExport = new SED_ScrutariDataExport($xmlWriter);
 
/* Début de l'export, $baseMetadataExport est une instance de SED_BaseMetadataExport
*/
$baseMetadataExport = $scrutariDataExport->startExport();
 
/* Définition des métadonnées de la base
SED_INTITULE_SHORT correspond à la constante INTITULE_SHORT de l'API
*/
$baseMetadataExport->setAuthorityUUID("e17a05b0-c45e-11d8-9669-0800200c9a66");
$baseMetadataExport->setBaseName("test");
$baseMetadataExport->setBaseIcon("http://monsite.net/icon-16x16pixels.png");
$baseMetadataExport->setIntitule(SED_INTITULE_SHORT, "fr", "Test");
$baseMetadataExport->setIntitule(SED_INTITULE_SHORT, "en", "Test");
$baseMetadataExport->setIntitule(SED_INTITULE_LONG, "fr", "Test du format scrutariData");
$baseMetadataExport->setIntitule(SED_INTITULE_LONG, "en", "ScrutariData Format Test");
$baseMetadataExport->addLangUI("fr");
$baseMetadataExport->addLangUI("en");
 
/* Insertion d'un corpus avec de nom « fiches »
$corpusMetadataExport est une instance de SED_CorpusMetadataExport
*/
$corpusMetadataExport = $scrutariDataExport->newCorpus("fiches");
 
/* Définition des métadonnées du corpus
*/
$corpusMetadataExport->setCorpusType("EXP");
$corpusMetadataExport->setIntitule(SED_INTITULE_CORPUS, "fr","Fiches d'expérience");
$corpusMetadataExport->setIntitule(SED_INTITULE_FICHE, "fr", "Fiche d'expérience n° ");
 
/* Définition de deux champs complémentaires
*/
$numero = $corpusMetadataExport->addComplement();
$corpusMetadataExport->setComplementIntitule($numero,"fr","Auteurs");
$corpusMetadataExport->setComplementIntitule($numero,"en","Authors");
$numero = $corpusMetadataExport->addComplement();
$corpusMetadataExport->setComplementIntitule($numero,"fr","Organismes");
 
/* Premier exemple d'une fiche
$ficheExport est une instance de SED_FicheExport
*/
$ficheExport = $scrutariDataExport->newFiche("1");
$ficheExport->setTitre("Première fiche");
$ficheExport->setDate("2006-03");
$ficheExport->setFicheType("DOC");
$ficheExport->setFicheIcon("http://monsite.net/icon2-16x16pixels.png");
$ficheExport->addComplement(2,"Collectif");
 
/*Second exemple de fiche
*/
$ficheExport = $scrutariDataExport->newFiche("2");
$ficheExport->setTitre("Seconde fiche");
$ficheExport->setSoustitre("le sous titre");
$ficheExport->setDate("2006-03");
$ficheExport->setLang("fr");
$ficheExport->setHref("http://monsite.net/ma-fiche-1.html");
$ficheExport->addComplement(2,"L'ASSO");
$ficheExport->addComplement(1,"Martin Dupont");
 
/* Exemple d'indexation : celle-ci peut de se faire à n'importe quel moment
même s'il ne s'agit du mot-clé ou de la fiche en cours ou que le thésaurus ou le corpus
n'ont pas encore été définis.
*/
$scrutariDataExport->addIndexation("fiches", "1", "motscles", "A01",1);
 
/* Insertion d'un thésaurus de nom « motscles »
$thesaurusMetadataExport est une instance de SED_ThesaurusMetadataExport
*/
$thesaurusMetadataExport = $scrutariDataExport->newThesaurus("motscles");
 
/* Définition des métadonnées du thésaurus
*/
$thesaurusMetadataExport->setIntitule(SED_INTITULE_THESAURUS,"fr","Mots-clés");
$thesaurusMetadataExport->setIntitule(SED_INTITULE_THESAURUS,"en","Keywords");
 
/* Exemple d'insertion d'un mot-clé au sein du thésaurus en cours
*/
$motcleExport = $scrutariDataExport->newMotcle("1");
$motcleExport->setLibelle("fr","Eau");
 
/* Autre exemple d'insertion d'indexation n'importe où*/
$scrutariDataExport->addIndexation("fiches", "fiche2", "motscles", "A01",4);
 
/* L'indexation précédente n'a pas changé l'état de l'export, on travaille
toujours sur le premier mot-clé */
$motcleExport->setLibelle("en","Water");
 
/* Fin de l'export
*/
$scrutariDataExport->endExport();
 
/* Fermeture du fichier */
fclose($file);
scrutaridata/exportapi/php.1265914318.txt.gz · Dernière modification: 2010/02/11 19:51 par vincent
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0