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.