Використання Phar-архівів: класи Phar та PharData
КлассPhar підтримує читання та обробку Phar-архівів, а також ітерацію через успадковану функціональність класу RecursiveDirectoryIteratorБлагодаря поддержке интерфейсаArrayAccess, доступ до файлів всередині Phar-архіву може бути отриманий, якби вони були частиною асоціативного масиву.
КлассPharData розширює клас Phar і дозволяє створювати та змінювати невиконані tar- та zip-архіви даних навіть у тому випадку, якщо параметр phar.readonly
=1 у php.ini. Фактично функції PharData::setAlias() і PharData::setStub() відключені, оскільки концепція псевдоніма та заглушки є унікальною для виконуваних phar-архівів.
При створенні Phar-архіву в конструктор об'єкта Phar має бути переданий повний шлях. Спроби ініціалізації об'єкта Phar з відносними шляхами зазнають невдачі.
Припустимо, що $p
- об'єкт Phar, ініціалізований, як показано нижче:
Loading...
Порожній Phar-архів буде створено в /шлях/до/myphar.phar
, або якщо файл /path/to/myphar.phar
вже існує, він буде відкрито повторно. Використання myphar.phar
показує концепцію псевдоніма, який може бути використаний для вказівки на /шлях/до/myphar.phar
в URL-адресах, подібно до того, як показано нижче:
Loading...
З щойно створеним об'єктом $p
классаPhar можливо наступне:
$a = $p['file.php']
створить об'єкт класуPharFileInfo, який посилатиметься на вмістphar://myphar.phar/file.php
$p['file.php'] = $v
створить новий файл (phar://myphar.phar/file.php
) або перезапише існуючий усерединіmyphar.phar
. .$v
може бути рядком або вказівником на відкритий файл. В останньому випадку для створення нового файлу буде використано весь вміст відкритого файлу. Зверніть увагу, що функціонально еквівалентним цьому буде виклик$p->addFromString('file.php', $v)
. Також є можливість додавання вмісту файлу за допомогою$p->addFile('/path/to/file.php', 'file.php')
. Нарешті, порожній каталог може бути створений за допомогою$p->addEmptyDir('empty')
isset($p['file.php'])
може бути використано для визначення існування файлуphar://myphar.phar/file.php
внутриmyphar.phar
unset($p['file.php'])
видаляє файлphar://myphar.phar/file.php
изmyphar.phar
Крім того, використання об'єкта Phar є єдиним способом отримати доступ до метаданих архіву (через Phar::getMetadata()) і єдиним способом встановити або отримати заглушку Phar-архіву через Phar::getStub() і Phar::setStub(). До того ж, працювати зі стисненням цілого Phar-архіву можна лише використовуючи клас Phar
Повний перелік функціоналу об'єкту Phar задокументовано нижче.
КлассPharFileInfo розширює клас SplFileInfo та додає кілька методів для роботи з деталями, властивими файлам, які містяться в Phar-архіві, такими як робота зі стисненням та метаданими.