Utiliser les archives Phar : les classes Phar et PharData

La classe Phar supporte la lecture et la manipulation des archives Phar, ainsi que l'itĂ©ration Ă  travers la fonctionnalitĂ© hĂ©ritĂ©e de la classe RecursiveDirectoryIterator. Avec le support de l'interface ArrayAccess, les fichiers contenus dans une archive Phar peuvent ĂȘtre accĂ©dĂ©s comme s'ils Ă©taient membres d'un tableau associatif.

La classe PharData Ă©tend la classe Phar, et permet la crĂ©ation et la modification d'archives tar et zip non exĂ©cutables (donnĂ©es) mĂȘme si phar.readonly=1 dans php.ini. Ainsi, PharData::setAlias() et PharData::setStub() sont toutes deux dĂ©sactivĂ©es car les concepts d'alias et de conteneur sont restreints aux archives phar exĂ©cutables.

Il est important de noter que quand une archive Phar est créée, le chemin complet doit ĂȘtre passĂ© au constructeur de l'objet Phar. Un chemin relatif empĂȘcherait l'initialisation.

En supposant que $p est un objet initialisé de cette façon :

<?php
$p
= new Phar('/chemin/vers/monphar.phar', 0, 'monphar.phar');
?>

Une archive Phar vide sera créée en tant que /chemin/vers/monphar.phar, ou si /chemin/vers/monphar.phar existe dĂ©jĂ , il sera ouvert de nouveau. Le terme monphar.phar dĂ©montre le concept d'un alias qui peut ĂȘtre utilisĂ© pour rĂ©fĂ©rencer /chemin/vers/monphar.phar dans des URL comme ceci :

<?php
// ces deux appels à file_get_contents() sont équivalents si
// /chemin/vers/monphar.phar a un alias explicite de "monphar.phar"
// dans son manifeste, ou si le phar a été initialisé avec l'instantiation de
// l'objet Phar de l'exemple précédent
$f = file_get_contents('phar:///chemin/vers/monphar.phar/nimportequoi.txt');
$f = file_get_contents('phar://monphar.phar/nimportequoi.txt');
?>

Avec l'objet Phar $p nouvellement créé, les choses suivantes sont possibles :

  • $a = $p['fichier.php'] crĂ©e une PharFileInfo qui rĂ©fĂšre au contenu de phar://monphar.phar/fichier.php
  • $p['fichier.php'] = $v crĂ©e un nouveau fichier (phar://monphar.phar/fichier.php), ou Ă©crase un fichier existant au sein de monphar.phar. $v peut ĂȘtre soit une chaĂźne ou un pointeur vers un fichier ouvert, dans quel cas le contenu du fichier sera utilisĂ© pour crĂ©er le nouveau fichier. À noter que $p->addFromString('fichier.php', $v) est Ă©quivalent en termes de fonctionnalitĂ© au cas ci-dessus. Il est aussi possible d'ajouter le contenu d'un fichier avec $p->addFile('/chemin/vers/fichier.php', 'fichier.php'). Enfin, un rĂ©pertoire vide peut ĂȘtre créé avec $p->addEmptyDir('vide').
  • isset($p['fichier.php']) peut ĂȘtre utilisĂ© pour dĂ©terminer si phar://monphar.phar/fichier.php existe au sein de monphar.phar.
  • unset($p['fichier.php']) efface phar://monphar.phar/fichier.php de monphar.phar.

De plus, l'objet Phar est le seul moyen d'accĂ©der aux mĂ©tadonnĂ©es spĂ©cifiques de Phar, via Phar::getMetadata(), et c'est aussi le seul moyen de rĂ©gler ou de rĂ©cupĂ©rer le conteneur du chargeur de l'archive Phar via Phar::getStub() et Phar::setStub(). De plus, la compression pour l'archive Phar entiĂšre peut ĂȘtre manipulĂ©e seulement via la classe Phar.

La liste complÚte des fonctionnalités de l'objet Phar est documentée ci-dessous.

La classe PharFileInfo étend la classe SplFileInfo et ajoute plusieurs méthodes pour manipuler les métadonnées spécifiques à Phar d'un fichier contenu dans un Phar, telles que manipuler la compression ou les métadonnées.

add a note

User Contributed Notes

There are no user contributed notes for this page.