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 SDE_ 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 MIT.

Le répertoire ScrutariDataExportLib complet peut être téléchargé à cette adresse : http://dataexport.scrutari.net/impl/php/ScrutariDataExportLib.zip ou via le dépôt Subversion

svn co http://depot.exemole.fr/svn/web/libs/ScrutariDataExportLib

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 SDE_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 SDE_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 SDE_XmlWriter est alors passé en argument au constructeur de la classe SDE_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 SDE_XmlWriter
 Pour que le code XML s'affiche dans la sortie standard, on écrirait $xmlWriter = new SDE_XmlWriter(NULL);
 */
$xmlWriter = new SDE_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 SDE_ScrutariDataExport qui suit l'API de ScrutariDataExport
*/
$scrutariDataExport = new SDE_ScrutariDataExport($xmlWriter);
 
/* Début de l'export, $baseMetadataExport est une instance de SDE_BaseMetadataExport
*/
$baseMetadataExport = $scrutariDataExport->startExport();
 
/* Définition des métadonnées de la base
SDE_INTITULE_SHORT correspond à la constante INTITULE_SHORT de l'API
*/
$baseMetadataExport->setAuthority("e17a05b0-c45e-11d8-9669-0800200c9a66");
$baseMetadataExport->setBaseName("test");
$baseMetadataExport->setBaseIcon("http://monsite.net/icon-16x16pixels.png");
$baseMetadataExport->setIntitule(SDE_INTITULE_SHORT, "fr", "Test");
$baseMetadataExport->setIntitule(SDE_INTITULE_SHORT, "en", "Test");
$baseMetadataExport->setIntitule(SDE_INTITULE_LONG, "fr", "Test du format scrutariData");
$baseMetadataExport->setIntitule(SDE_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 SDE_CorpusMetadataExport
*/
$corpusMetadataExport = $scrutariDataExport->newCorpus("fiches");
 
/* Définition des métadonnées du corpus
*/
$corpusMetadataExport->setIntitule(SDE_INTITULE_CORPUS, "fr","Fiches d'expérience");
$corpusMetadataExport->setIntitule(SDE_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 SDE_FicheExport
*/
$ficheExport = $scrutariDataExport->newFiche("1");
$ficheExport->setTitre("Première fiche");
$ficheExport->setDate("2006-03");
$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 SDE_ThesaurusMetadataExport
*/
$thesaurusMetadataExport = $scrutariDataExport->newThesaurus("motscles");
 
/* Définition des métadonnées du thésaurus
*/
$thesaurusMetadataExport->setIntitule(SDE_INTITULE_THESAURUS,"fr","Mots-clés");
$thesaurusMetadataExport->setIntitule(SDE_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.1467889842.txt.gz · Dernière modification: 2016/07/07 13:10 par vincent
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0