Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie das Archivformat phar für die PHP-Entwicklung

So verwenden Sie das Archivformat phar für die PHP-Entwicklung

php中世界最好的语言
php中世界最好的语言Original
2017-12-20 18:01:521846Durchsuche

Lassen Sie mich Ihnen das Konzept und die Verwendung von Phar-Dateien vorstellen, die von PHP entwickelt wurden. Wir wissen, dass eine PHP-Anwendung oft aus mehreren Dateien besteht. Es ist sehr praktisch, wenn sie zur Verteilung und zum Betrieb in einer Datei zusammengefasst werden können Es gibt viele davon, aber sie sind hauptsächlich für die Webumgebung von PHP konzipiert. Phar-Archive können von PHP selbst verarbeitet werden, sodass keine zusätzlichen Tools zum Erstellen oder Extrahieren erforderlich sind mit einem PHP-Skript. phar ist ein zusammengesetztes Wort aus PHP und Archive. Es ist ersichtlich, dass es PHP-Archivdatei bedeutet.

Phar-Archivdateien haben drei Formate: TAR-Archiv, ZIP-Archiv und Phar-Archiv. Die ersten beiden Arten der Ausführung erfordern die Installation der Phar-Erweiterungsunterstützung und werden hier hauptsächlich vom Phar-Archiv verwendet Format.

Archivdateien im Phar-Format können direkt ausgeführt werden. Die Generierung basiert auf der Phar-Erweiterung und wird durch ein von Ihnen selbst geschriebenes PHP-Skript generiert.

Phar-Erweiterung ist kein neues Konzept für PHP. Sie wurde ursprünglich in PHP geschrieben und hieß PHP_Archive und wurde dann 2005 zur PEAR-Bibliothek hinzugefügt. Da reine PHP-Lösungen für dieses Problem in der Praxis sehr langsam waren, wurde es 2007 als reine C-Spracherweiterung umgeschrieben und gleichzeitig Unterstützung für ArrayAccess Object Traversal Phar-Archive mit SPL hinzugefügt. Seitdem wurde viel daran gearbeitet, die Leistung der Phar-Archive zu verbessern.

Die Phar-Erweiterung basiert auf dem PHP-Stream-Wrapper. Weitere Informationen finden Sie im vorherigen Artikel „PHP-Streams, Wrapper-Wrapper-Konzepte und Anwendungsbeispiele“.

Viele PHP-Anwendungen werden im Phar-Format verteilt. das berühmte Abhängigkeitsmanagement: Composer, Unit-Tests: PHPUnit, schauen wir uns an, wie man erstellt, ausführt, extrahiert und wiederherstellt.

Erstellung der Phar-Datei:

Ändern Sie zunächst die Option phar.readonly in php.ini, entfernen Sie das vorangehende Semikolon und ändern Sie den Wert auf „Aus“. Wenn es in php.ini deaktiviert ist (der Wert ist 0 oder aus), kann es standardmäßig im Benutzerskript aktiviert oder deaktiviert werden. Wenn es in php.ini aktiviert ist, kann das Benutzerskript nicht aktiviert werden Aus, daher ist es hier auf Aus eingestellt, um Beispiele zu zeigen.

Erstellen wir einen Projektordner im Stammverzeichnis des Servers als Projekt. Die Struktur im Verzeichnis ist wie folgt:

file
  -yunek.js
  -yunke.css
lib
  -lib_a.php
template
  -msg.html
index.php
Lib.php


wo file Der Ordner enthält zwei JS- und CSS-Dateien mit leerem Inhalt. Dies zeigt nur, dass phar mehrere Dateiformate enthalten kann.

Der Inhalt von lib_a.php lautet wie folgt:

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/10
 * Time: 9:23
 */
function show(){
  echo "l am show()";
}


Der Inhalt von

msg.html lautet wie folgt:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>phar</title>
</head>
<body>
<?=$str; ?>
</body>
</html>


Der Inhalt von index.php lautet wie folgt:

<?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";


Der Inhalt von Lib.php lautet wie folgt:

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/10
 * Time: 9:20
 */
function yunke()
{
  echo "l am yunke()";
}


Die Projektdatei ist fertig, beginnen Sie nun mit der Erstellung yunkeBuild.php im gleichen Verzeichnis des Projektordners zum Generieren einer Phar-Formatdatei mit folgendem Inhalt:

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/10
 * Time: 9:36
 */
//产生一个yunke.phar文件
$phar = new Phar(&#39;yunke.phar&#39;, 0, &#39;yunke.phar&#39;);
// 添加project里面的所有文件到yunke.phar归档文件
$phar->buildFromDirectory(dirname(FILE) . &#39;/project&#39;);
//设置执行时的入口文件,第一个用于命令行,第二个用于浏览器访问,这里都设置为index.php
$phar->setDefaultStub(&#39;index.php&#39;, &#39;index.php&#39;);


Greifen Sie dann auf diese yunkeBuild.php-Datei im zu Browser wird eine yunke.phar-Datei generiert. Zu diesem Zeitpunkt ist die Verzeichnisstruktur des Servers wie folgt:

project
yunkeBuild.php
yunke.phar


Dies ist der am einfachsten zu generierende Prozess Eine Phar-Archivdatei finden Sie auf der offiziellen Website. Hier ist zu beachten, dass es nicht angebracht ist, Phar-Archivdateien zu verwenden, wenn dies nicht der Fall ist der Phar-Archivdateien:

Wir erstellen eine index.php-Datei im Stammverzeichnis des Servers, um zu demonstrieren, wie die oben erstellte Phar-Datei verwendet wird. Der Inhalt lautet wie folgt:

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/8
 * Time: 9:33
 */
require "yunke.phar";
require "phar://yunke.phar/Lib.php";
yunke();


Wenn die Datei index.php nur die erste Zeile enthält, fügen Sie den folgenden Code genau so hinzu, wie wenn Sie keine Archivdatei verwenden:

require "project/index.php";


Wenn es keine zweite Zeile gibt, zeigt yunke() in der dritten Zeile an, dass sie nicht definiert ist, sodass ersichtlich ist, dass bei der Anforderung einer Phar-Datei nicht alle darin enthaltenen Dateien importiert werden, sondern nur Die Eintragsausführungsdatei wird nur importiert, aber in tatsächlichen Projekten werden häufig andere Dateien, die verwendet werden müssen, in diese Eintragsdatei importiert. In diesem Fall handelt es sich bei der Eintragsausführungsdatei um die Extraktion und Wiederherstellung der Datei project/index.php

Phar-Datei:

Manchmal sind wir neugierig auf den Quellcode der in der Phar-Datei enthaltenen Dateien. Zu diesem Zeitpunkt müssen wir die Phar-Datei wiederherstellen Verwenden Sie einige IDE-Tools wie phpstorm 10, um es direkt zu öffnen. Bei Bedarf ist ein Extraktionsvorgang erforderlich. Zur Demonstration laden wir eine Composer.phar herunter, legen sie im Serververzeichnis ab und erstellen eine get.php-Datei im Stammverzeichnis mit folgendem Inhalt:

<?php
/**
 * Created by yunke.
 * User: yunke
 * Date: 2017/2/9
 * Time: 19:02
 */
$phar = new Phar(&#39;composer.phar&#39;);
$phar->extractTo(&#39;composer&#39;); //提取一份原项目文件
$phar->convertToData(Phar::ZIP); //另外再提取一份,和上行二选一即可


Verwenden Sie einen Browser, um auf diese Datei zuzugreifen und sie zu extrahieren. Das obige Beispiel zeigt zwei Extraktionsmethoden: Die zweite Zeile erstellt ein Composer-Verzeichnis und fügen Sie den extrahierten Inhalt ein. In der dritten Zeile wird eine Datei „composer.zip“ generiert und dekomprimiert, um die extrahierten und wiederhergestellten Projektdateien zu erhalten.

Ergänzung:

1 Wenn Sie Phar-Dateien auf dem Produktionsserver bereitstellen, müssen Sie die Serverkonfiguration anpassen, um zu verhindern, dass der Browser die Phar-Datei beim Zugriff direkt herunterlädt

2 . Sie können einen Alias ​​für das Archiv festlegen. Er kann mit einem Kurznamen auf das Archiv verweisen, unabhängig davon, wo die Archivdatei im Dateisystem gespeichert ist

$phar = new Phar(&#39;lib/yunke.phar&#39;, 0);
$phar->setAlias ( "yun.phar");

Nachdem Sie den Alias ​​festgelegt haben, können Sie ihn wie folgt verwenden:

<?php
require "lib/yunke.phar";
require "phar://yun.phar/Lib.php"; //使用别名访问归档文件
require "phar://lib/yunke.phar/Lib.php"; //当然仍然可以使用这样的方式去引用

Wenn Sie beim Erstellen einer Phar-Datei keinen Alias ​​angeben, können Sie auch Phar::mapPhar('yunke.phar'); in der Stub-Datei verwenden, um

3. Es gibt einen Stub Tatsächlich handelt es sich um einen PHP-Ausführungscode, der beim Erstellen einer Archivdatei festgelegt werden kann Wenn es im Skript enthalten ist, wird es wie eine normale PHP-Datei eingebunden und ausgeführt, aber wenn eine Datei im Archiv direkt in phar:// eingebunden ist, wird der Stub-Code nicht ausgeführt. Die Stub-Datei erfordert oft die Ausführung anderer Dateien Die Einschränkung für die Stub-Datei besteht nur darin, mit HALT_COMPILER(); zu enden, was die Standardeinstellung ist. Der Stub ist so konzipiert, dass er ohne die Phar-Erweiterung ausgeführt wird. Er extrahiert den Inhalt der Phar-Datei in ein temporäres Verzeichnis und führt ihn dann aus . Ab php5.3 ist die Erweiterung jedoch standardmäßig aktiviert

4. Die erstellte Phar-Datei kann nicht geändert werden, daher müssen Dateien wie Konfigurationsdateien außerhalb der Archivdatei abgelegt werden

5. MapPhar-Funktion: Diese Funktion sollte nur im Stub-Code aufgerufen werden und kann zum Festlegen des Alias ​​verwendet werden, wenn der Archiv-Alias ​​nicht festgelegt ist. Öffnen Sie eine Referenz, die dem Phar-Stream zugeordnet ist


Ich glaube, dass Sie die Methode beherrschen, nachdem Sie diese Fälle gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Verwandte Lektüre:

Wie PHP das Problem des großen Website-Verkehrs und der hohen Parallelität löst

AJAX-Prinzipien und CORS-Kreuzung -Domain-Methoden

Detaillierte Erläuterung der Javascript-Datentypen und des Git-Verwendungscodes

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Archivformat phar für die PHP-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn