Une application PHP est souvent composée de plusieurs fichiers. Il est très pratique de pouvoir les concentrer dans un seul fichier pour les distribuer et les exécuter. Il existe de nombreux exemples de ce type, comme le programme d'installation sur le système d'exploitation Windows, une bibliothèque jquery. , etc. Pour y parvenir, PHP utilise le format de fichier de document phar. Ce concept est dérivé du jar de Java, mais il est principalement conçu pour.
L'environnement Web de PHP, contrairement aux archives JAR, les archives Phar peuvent être
Géré de manière native, aucun outil supplémentaire n'est nécessaire pour le créer ou l'utiliser, utilisez simplement un script php pour le créer ou l'extraire. phar est un mot composé composé de PHP et
Composition de l'archive, vous pouvez voir que cela signifie un fichier d'archive php.
Il existe trois formats de fichiers d'archive phar : l'archive tar, l'archive zip et l'archive phar. Les deux premiers types d'exécution nécessitent que Phar installe le support de l'extension Phar et sont rarement utilisés ici.
Le fichier d'archive au format phar peut être exécuté directement. Sa génération repose sur l'extension Phar et est générée par un script php écrit par vous-même.
L'extension Phar n'est pas un concept nouveau pour PHP. Elle a été intégrée à PHP en php5.3. Elle a été initialement écrite en PHP et nommée. PHP_Archive a ensuite été ajouté à la bibliothèque PEAR en 2005. Puisque les solutions PHP pures à ce problème sont très lentes en pratique, 2007 Réécrit en tant qu'extension de langage C pur et ajout de la traversée d'objets ArrayAccess à l'aide de SPL Phar Prise en charge de l'archivage. Depuis, de nombreux travaux ont été réalisés pour améliorer les performances des archives Phar.
L'extension Phar dépend du wrapper de flux php. Pour cela, veuillez vous référer à l'article précédent Flux PHP et concepts de wrapper et exemples d'utilisation
. De nombreuses applications PHP sont distribuées et exécutées au format phar. Les plus connues incluent la gestion des dépendances : composer et les tests unitaires : phpunit. Voyons comment créer, exécuter, extraire et restaurer.
Création du fichier phar :
Modifiez d'abord l'option phar.readonly dans php.ini, supprimez le point-virgule précédent et modifiez la valeur sur off. Pour des raisons de sécurité, cette option est activée par défaut si elle est désactivée dans php.ini (la valeur est 0 ou off). ), alors il peut être activé ou désactivé dans le script utilisateur. S'il est activé dans php.ini, le script utilisateur ne peut pas être désactivé, il est donc désactivé ici pour montrer l'exemple.
Créons un projet. Créez un dossier de projet dans le répertoire racine du serveur en tant que projet. La structure du répertoire est la suivante :
file -yunek.js -yunke.css lib -lib_a.php template -msg.html index.php Lib.php
. Le dossier de fichiers contient deux fichiers js et css avec un contenu vide. Cela démontre seulement que phar peut contenir plusieurs formats de fichiers
. Le contenu de lib_a.php est le suivant :
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/10 * Time: 9:23 */ function show(){ echo "l am show()"; }
Le contenu de msg.html est le suivant :
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>phar</title> </head> <body> <?=$str; ?> </body> </html>
Le contenu de index.php est le suivant :
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/10 * Time: 9:17 */ require "lib/lib_a.php"; show(); $str = isset($_GET["str"]) ? $_GET["str"] : "hello world"; include "template/msg.html";
Le contenu de Lib.php est le suivant :
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/10 * Time: 9:20 */ function yunke() { echo "l am yunke()"; }
Le fichier projet est prêt et a commencé à être créé. Créez maintenant un yunkeBuild.php dans le même répertoire que le dossier du projet pour générer un fichier au format phar. Le contenu est le suivant :
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/10 * Time: 9:36 */ //产生一个yunke.phar文件 $phar = new Phar('yunke.phar', 0, 'yunke.phar'); // 添加project里面的所有文件到yunke.phar归档文件 $phar->buildFromDirectory(dirname(__FILE__) . '/project'); //设置执行时的入口文件,第一个用于命令行,第二个用于浏览器访问,这里都设置为index.php $phar->setDefaultStub('index.php', 'index.php');
. Accédez ensuite à ce fichier yunkeBuild.php dans le navigateur, un fichier yunke.phar sera généré. A ce moment, la structure du répertoire racine du serveur est la suivante :
project yunkeBuild.php yunke.phar
. Il s'agit du processus le plus simple pour générer un fichier d'archive phar. Pour plus d'informations, veuillez consulter le site officiel. Il convient de noter ici que si le projet n'a pas une seule entrée d'exécution, il n'est pas approprié d'utiliser le fichier d'archive phar <.>
Utilisation des fichiers d'archive phar : Nous créons un fichier index.php dans le répertoire racine du serveur pour montrer comment utiliser le fichier phar créé ci-dessus. Le contenu est le suivant :<?php /** * Created by yunke. * User: yunke * Date: 2017/2/8 * Time: 9:33 */ require "yunke.phar"; require "phar://yunke.phar/Lib.php"; yunke();
require "project/index.php";
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/9 * Time: 19:02 */ $phar = new Phar('composer.phar'); $phar->extractTo('composer'); //提取一份原项目文件 $phar->convertToData(Phar::ZIP); //另外再提取一份,和上行二选一即可
$phar = new Phar('lib/yunke.phar', 0); $phar->setAlias ( "yun.phar");
<?php require "lib/yunke.phar"; require "phar://yun.phar/Lib.php"; //使用别名访问归档文件 require "phar://lib/yunke.phar/Lib.php"; //当然仍然可以使用这样的方式去引用
3. Il y a un fichier stub dans le fichier d'archive, qui est en fait un morceau de code d'exécution PHP. Il peut être défini lors de la création de l'archive. Lorsque le fichier d'archive est exécuté directement, il est réellement exécuté, il s'agit donc d'un fichier de démarrage. ; lorsque le fichier d'archive est inclus dans le script, c'est comme l'inclure et l'exécuter comme un fichier php normal, mais le code stub ne sera pas exécuté lorsque vous incluez directement un fichier dans l'archive en utilisant phar://. Le fichier stub nécessite souvent l'exécution d'autres fichiers. La restriction sur le fichier stub est uniquement de se terminer par __HALT_COMPILER();. Le stub par défaut est conçu pour s'exécuter sans l'extension phar. Il extrait le contenu du fichier phar dans un fichier temporaire. Répertoire puis exécuter, mais à partir de php5.3, l'extension est activée par défaut
4. Le fichier phar créé ne peut pas être modifié, les fichiers tels que les fichiers de configuration doivent donc être placés en dehors du fichier d'archive
5. Fonction mapPhar : cette fonction ne doit être appelée que dans le code stub. Lorsque l'alias d'archive n'est pas défini, elle peut être utilisée pour définir l'alias et ouvrir une référence mappée sur le flux phar.
Recommandations associées :
Comment utiliser le format d'archive phar pour le développement PHP
Comment utiliser le package phar en PHP
Tutoriel détaillé sur l'utilisation du package phar en php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!