Phar
&reftitle.intro;
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 bases 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, il faut
utiliser la fonction include:
Utiliser un fichier externe
]]>
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.
Utiliser un fichier contenu dans une archive phar
]]>
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. Cela 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 courante 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'extension 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 :
Convertir une archive phar au format tar
convertToExecutable(Phar::TAR, Phar::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, SHA-1, SHA-256 ou SHA-512.
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 l'on crée des applications dans le but de les distribuer, il est recommandé de lire
Comment créer des archives Phar. Pour
davantage d'informations sur les différences entre les formats de fichier que phar supporte,
il est recommandé de lire Phar, Tar et Zip.
Lors de l'utilisation 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 modifications pour fonctionner.
&reference.phar.setup;
&reference.phar.constants;
&reference.phar.using;
&reference.phar.creating;
&reference.phar.fileformat;
&reference.phar.Phar;
&reference.phar.PharData;
&reference.phar.PharFileInfo;
&reference.phar.PharException;