array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'pharfileinfo.setmetadata.php', 1 => 'PharFileInfo::setMetadata', ), 'up' => array ( 0 => 'class.pharfileinfo.php', 1 => 'PharFileInfo', ), 'prev' => array ( 0 => 'pharfileinfo.iscompressed.php', 1 => 'PharFileInfo::isCompressed', ), 'next' => array ( 0 => 'class.pharexception.php', 1 => 'PharException', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/phar/PharFileInfo/setMetadata.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL phar >= 1.0.0)
PharFileInfo::setMetadata — ファイルとともに保存する、ファイル固有のメタデータを設定する
PharFileInfo::setMetadata() を使用するのは、 既存のファイル情報としては表せない独自の情報を保存する場合のみに限るべきです。 メタデータを使用すると、phar アーカイブの読み込み時のパフォーマンスが劇的に低下します。これは、 メタデータのサイズが大きい場合やメタデータを含むファイルが大量にある場合に顕著になります。 ファイルのパーミッションについては phar 自体でネイティブにサポートしており、 PharFileInfo->chmod() で設定できることを覚えておきましょう。 この関数は phar の内容を変更するので、Phar アーカイブ内のファイルを操作するには INI 設定 phar.readonly がオフでなければなりません。 PharData アーカイブ内のファイルについては、この制約はありません。
メタデータの使用例として考えられるのは、ユーザー/グループ を指定し、phar からディスクに展開する際にそれを設定することなどです。 ほかには、MIME 型として返す値を明示的に指定することなどがあります。 その他、ファイルについて説明するデータであるが ファイル自体に含むべきでないものを保存したりします。
metadata
ファイルとともに保存する情報を含む、PHP の変数。
値を返しません。
例1 PharFileInfo::setMetadata() の例
<?php
// 確実に消しておきます
@unlink('brandnewphar.phar');
try {
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p['file.txt'] = 'hello';
$p['file.txt']->setMetadata(array('user' => 'bill', 'mime-type' => 'text/plain'));
var_dump($p['file.txt']->getMetaData());
} catch (Exception $e) {
echo 'phar を作成/変更できません:', $e;
}
?>
上の例の出力は以下となります。
array(2) { ["user"]=> string(4) "bill" ["mime-type"]=> string(10) "text/plain" }