Introduction

L'extension phar fournit un moyen de mettre une application PHP compl�te dans un fichier unique appel� un "phar" (PHP Archive) pour une installation et une configuration ais�es. En plus de ce service, l'extension fournit aussi une classe d'abstraction de format de fichier pour cr�er et manipuler des fichiers tar et zip � travers la classe PharData, tout comme PDO fournit une interface unifi�e pour acc�der � des base de donn�es diff�rentes. Mais � l'inverse de PDO, qui ne peut pas transposer les donn�es d'une base � l'autre, Phar a la possibilit� de convertir des fichiers tar, zip et phar avec une simple ligne de code. Regardez Phar::convertToExecutable() pour avoir un exemple.

Qu'est-ce que phar? Les archives phar sont en fait un moyen pratique de grouper plusieurs fichiers en un seul. Ainsi, une archive phar permet de distribuer une application PHP compl�te dans un fichier unique et de l'ex�cuter � partir de ce fichier sans pour autant l'extraire sur le disque. De plus, des archives phar peuvent �tre ex�cut�es par PHP aussi facilement que n'importe quel autre fichier, aussi bien en ligne de commande que via un serveur web. Phar est une sorte de cl� USB pour les applications PHP.

Phar impl�mente cette fonctionnalit� via un flux. Normalement, pour utiliser un fichier externe � partir d'un script PHP, vous devez utiliser la fonction include()

Exemple #1 Utiliser un fichier externe

<?php
 
include '/chemin/vers/le/fichier/externe.php';
 
?>

On peut consid�rer que PHP traduit en fait /chemin/vers/le/fichier/externe.php en un flux file:///chemin/vers/le/fichier/externe.php, et qu'il utilise de fa�on cach�e les fonctions de flux de fichiers plats pour acc�der � des fichiers locaux.

Pour utiliser un fichier nomm� fichier.php contenu dans une archive phar /chemin/vers/monphar.phar, la syntaxe est quasi similaire � la syntaxe file:// ci-dessus.

Exemple #2 Utilier un fichier contenu dans une archive phar

<?php
 
include 'phar:///chemin/vers/monphar.phar/fichier.php';
 
?>

En fait, on peut traiter une archive phar comme s'il s'agissait d'un disque externe, en utilisant n'importe laquelle des fonctions relatives � fopen(), opendir() et mkdir() pour lire, changer ou cr�er des nouveaux fichiers ou r�pertoires au sein de l'archive phar. Cel� permet � des applications PHP compl�tes d'�tre distribu�es dans un seul fichier et d'�tre ex�cut�es � partir de celui-ci

L'utilisation la plus courant d'une archive phar est de distribuer une application compl�te en un seul fichier. Par exemple, l'installeur PEAR qui est inclus avec les versions de PHP est distribu� gr�ce � une archive phar. pour utiliser l'archive phar ainsi distribu�e, celle-ci peut-�tre ex�cut�e via la ligne de commande ou via un navigateur web.

Les archives phar peuvent �tre distribu�es sous forme de fichiers tar, de fichiers zip ou de fichiers phar sp�cialement con�us pour l'extensions phar. Chaque format de fichier a ses avantages et ses inconv�nients. Les fichiers zip et tar peuvent �tre extraits par n'importe quel outil tiers qui peut lire le format, mais requi�rent l'extension phar pour �tre ex�cut�s par PHP. Le format de fichier phar est unique et d�di� � l'extension phar et peut �tre cr�� uniquement par celle-ci ou par le paquet PEAR » PHP_Archive, mais a l'avantage de ne pas n�cessiter l'installation de l'extension phar pour que l'application empaquet�e puisse �tre ex�cut�e.

En d'autres mots, m�me avec l'extension phar d�sactiv�e, il est possible d'ex�cuter ou d'inclure une archive bas�e sur phar. Acc�der � des fichiers individuels au sein d'une archive phar n'est possible qu'avec l'extension phar � moins que l'archive phar n'ait �t� cr��e par PHP_Archive.

L'extension phar est aussi capable de convertir une archive phar � partir d'un tar vers un fichier zip ou phar en une seule commande :

Exemple #3 Convertir une archive phar au format tar

<?php
 $phar 
= new Phar('monphar.phar');
 
$pgz $phar->convertToExecutable(Phar::TARPhar::GZ); // produit monphar.phar.tar.gz
 
?>

Phar peut compresser des fichiers individuels ou une archive enti�re en utilisant la compression gzip ou bzip2, et peut v�rifier l'int�grit� de l'archive automatiquement en utilisant des fonctions de signature md5(), sha1(), sha256(), ou sha512().

Enfin, l'extension phar est orient�e s�curit�, elle d�sactive par d�faut les acc�s en �criture sur les archives phar ex�cutables et requiert la d�sactivation au niveau syst�me du param�tre phar.readonly du php.ini pour cr�er ou modifier des archives phar. Des archives tar et zip sans le marqueur ex�cutable peuvent toujours �tre cr��es ou modifi�es en utilisant la classe PharData.

Si vous cr�ez des applications dans le but de les distribuer, vous devriez lire Comment cr�er des archives Phar. Si vous voulez davantage d'informations sur les diff�rences entre les formats de fichier que phar supporte, vous devriez lire Phar, Tar et Zip.

Si vous utilisez des applications phar, il y a des astuces tr�s utiles dans Comment utiliser des archives Phar

Le mot phar est la contraction de PHP et de Archive et est grandement inspir� du mot jar (Java Archive) familier aux d�veloppeurs Java.

L'impl�mentation des archives Phar est bas�e sur le paquet PEAR » PHP_Archive, et les d�tails d'impl�mentations sont les m�mes, bien que l'extension Phar soit plus puissante. En plus, celle-ci permet � la plupart des applications PHP d'�tre ex�cut�es sans modification alors que les archives bas�es sur PHP_Archive requi�rent souvent beaucoup de modification pour fonctionner.