PHP アプリケーションは複数のファイルで構成されることが多く、それらを 1 つのファイルにまとめて配布して実行できると非常に便利です。たとえば、Windows オペレーティング システムのインストール プログラムや jquery ライブラリなどです。待ってください。これを行うために、PHP は phar ドキュメント ファイル形式を使用します。この概念は Java の jar から来ていますが、主に のために設計されています。
PHP の Web 環境では、JAR アーカイブとは異なり、Phar アーカイブは
ネイティブに処理されるため、作成または使用するために追加のツールは必要ありません。PHP スクリプトを使用して作成または抽出するだけです。 pharはPHPと
アーカイブ構成とは、php アーカイブ ファイルを意味することがわかります。
phar アーカイブ ファイルには、tar アーカイブ、zip アーカイブ、および phar アーカイブの 3 つの形式があります。最初の 2 つのタイプの実行では、Phar 拡張機能サポートをインストールする必要がありますが、ここでは主に phar アーカイブ形式について説明します。
phar 形式のアーカイブ ファイルは、Phar 拡張機能に依存して直接実行でき、自分で作成した php スクリプトによって生成されます。
Phar 拡張機能は PHP にとって新しい概念ではなく、PHP5.3 で PHP に組み込まれました。元々は PHP で作成され、名前が付けられました。 その後、2005 年に PHP_Archive が PEAR ライブラリに追加されました。この問題に対する純粋な PHP ソリューションは実際には非常に遅いため、2007 純粋な C 言語拡張機能として書き直され、SPL Phar を使用した ArrayAccess オブジェクト トラバーサルが追加されました。 アーカイブのサポート。それ以来、Phar アーカイブのパフォーマンスを向上させるために多くの作業が行われてきました。
Phar 拡張機能は PHP ストリーム ラッパーに依存します。これについては、PHP ストリームとラッパー ラッパーの概念と使用例の詳細な説明については、前の記事を参照してください。 多くの PHP アプリケーションは phar 形式で配布され、実行されます。有名なものとしては、依存関係管理 (composer) や単体テスト (phpunit) の作成、実行、抽出、復元の方法を見てみましょう。
phar ファイルの作成:
まず、php.ini の phar.readonly オプションを変更し、先行するセミコロンを削除し、値を off に変更します。php.ini で無効になっている場合、このオプションはデフォルトで on になります (値は 0 または off)。 ) を使用すると、php.ini でオンまたはオフにできます。そのため、ここでは例を示すためにオフに設定します。
プロジェクトを作成しましょう。 サーバーのルートディレクトリにプロジェクトフォルダーを作成します。 ディレクトリ内の構造は次のとおりです。 ファイルフォルダーには、中身が空の 2 つの js ファイルと css ファイルがあります。これは、phar に複数のファイル形式を含めることができることを示しているだけです
。 lib_a.php の内容は次のとおりです:
file -yunek.js -yunke.css lib -lib_a.php template -msg.html index.php Lib.php
msg.htmlの内容は以下の通りです:
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/10 * Time: 9:23 */ function show(){ echo "l am show()"; }
Index.phpの内容は以下の通りです:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>phar</title> </head> <body> <?=$str; ?> </body> </html>
Lib.phpの内容は以下の通りです:
<?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";
プロジェクトファイルの作成が完了しました。 プロジェクトフォルダーと同じディレクトリに yunkeBuild.php を作成し、内容は次のとおりです。 次に、ブラウザでこの yunkeBuild.php ファイルにアクセスすると、yunke.phar ファイルが生成されます。このとき、サーバーのルート ディレクトリ構造は次のようになります。 これは、phar アーカイブ ファイルを生成する最も簡単なプロセスです。詳細については、公式 Web サイトを参照してください。プロジェクトに単一の実行エントリがない場合、phar アーカイブ ファイルの使用は適切ではないことに注意してください。 phar アーカイブ ファイルの使用法:
上記で作成した phar ファイルの使用方法を示すために、サーバーのルート ディレクトリにindex.php ファイルを作成します。内容は次のとおりです。 Index.php ファイルに最初の行しかない場合は、アーカイブ ファイルを使用しない場合とまったく同じように次のコードを追加します:
<?php /** * Created by yunke. * User: yunke * Date: 2017/2/10 * Time: 9:20 */ function yunke() { echo "l am yunke()"; }
2 行目がない場合、3 行目の yunke() は未定義であることを示すプロンプトを表示します。そのため、phar ファイルが必要な場合、そのファイル内のすべてのファイルがインポートされるわけではなく、エントリの実行ファイルのみがインポートされることがわかります。ただし、実際のプロジェクトでは、このエントリ ファイルで使用する必要がある他のファイルをインポートすることがよくあります。この例では、エントリの実行ファイルは project/index.php
です。 phar ファイルの抽出と復元:
phar に含まれるファイルのソース コードが気になる場合があります。このとき、phpstorm などの IDE ツールを使用して、phar ファイルを復元することができます。 10 を変更する必要がある場合は、それを抽出する必要があります。デモンストレーションのために、composer.phar をダウンロードしてサーバー ディレクトリに置き、ルート ディレクトリに get.php ファイルを作成します。内容は以下の通りです
<?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');
ブラウザを使用してこのファイルにアクセスし、解凍します。上の例では、2 つの抽出方法を示しています。2 行目では、composer ディレクトリを作成し、抽出したコンテンツをそこに配置します。このファイルは、解凍できます。抽出および復元されたプロジェクト ファイルが利用可能です。
補足:
1. phar ファイルを実稼働サーバーにデプロイする場合、アクセス時にブラウザーが phar ファイルを直接ダウンロードしないようにサーバー構成を調整する必要があります
2. アーカイブのエイリアスを設定できます。エイリアスは、アーカイブ ファイルがファイル システムのどこに保存されているかに関係なく、アーカイブ ファイルに永続的に保存されます。
エイリアスを設定したら、次のように使用できます:project yunkeBuild.php yunke.phar
3. アーカイブファイルにはスタブファイルがあり、これは実際には PHP の実行コードの一部であり、アーカイブファイルを直接実行すると実際に実行されるため、スタートアップファイルになります。 ; アーカイブファイルがスクリプトに含まれている場合は、通常のphpファイルと同じようにIncludeして実行しますが、phar://を使用してアーカイブにファイルを直接インクルードした場合、スタブコードは実行されません。 スタブ ファイルは、多くの場合、他のファイルを実行する必要があります。スタブ ファイルの制限は、__HALT_COMPILER(); で終わることだけです。デフォルトのスタブは、phar ファイルの内容を一時ファイルに抽出します。ディレクトリを指定して実行しますが、php5.3以降、拡張機能はデフォルトで有効になっています
4. 作成したpharファイルは変更できないため、設定ファイルなどのファイルはアーカイブファイルの外に置く必要があります
5. mapPhar 関数: この関数は、アーカイブ エイリアスが設定されていない場合、エイリアスを設定し、phar ストリームにマップされた参照を開くために使用できます。
関連する推奨事項:
phar パッケージの使用方法 PHP で phar パッケージを使用する方法の詳細なチュートリアル
以上がPHP開発アーカイブ形式pharファイルの概念と使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。