git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@343619 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Andrey Gromov
2017-12-08 13:44:25 +00:00
parent ba9efe2371
commit 1c048fd5e1
33 changed files with 3805 additions and 0 deletions

View File

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.createdefaultstub">
<refnamediv>
<refname>Phar::createDefaultStub</refname>
<refpurpose>Создать загрузчик в формате phar-архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>string</type><methodname>Phar::createDefaultStub</methodname>
<methodparam choice="opt"><type>string</type><parameter>indexfile</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>webindexfile</parameter></methodparam>
</methodsynopsis>
<para>
Этот метод создает код загрузчика (stub) в специфичном для phar-архива формате
и не предназначеный для использования с файловыми архивами на основе tar или zip.
</para>
<para>
Phar-архивы содержат загрузчик (<literal>stub</literal>), написанный на
PHP, который запускается при запуске архива, когда его подключают через include:
<programlisting role="php">
<![CDATA[
<?php
include 'myphar.phar';
?>
]]>
</programlisting>
или просто запускают:
<screen>
<![CDATA[
php myphar.phar
]]>
</screen>
</para>
<para>
Этот метод предоставляет простой способ для создания загрузчика, который будет
отрабатывать при запуске phar-архива. Кроме того, можно указывать разные
файлы для запуска phar-архива через веб-сервер и через командрую строку.
Загрузчик также вызывает <function>Phar::interceptFileFuncs</function>
для простого создания приложений PHP с доступом к файловой системе.
Если расширение phar отсутствует, то загрузчик распакует phar-архив во временную
директорию и запустит приложение оттуда. Функция завершения работы удалит все
временные файлы.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает текст с кодом загрузчика (stub), который позволит Phar-архиву запускаться
независимо от того, подключено ли расширение Phar или нет.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Бросит исключение <classname>UnexpectedValueException</classname>, если любой
из параметров будет длинее 400 байт.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::createDefaultStub</function></title>
<programlisting role="php">
<![CDATA[
<?php
try {
$phar = new Phar('myphar.phar');
$phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
} catch (Exception $e) {
// обрабатываем ошибки
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::setStub</function></member>
<member><function>Phar::getStub</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.delmetadata" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::delMetadata</refname>
<refpurpose>Удалить глобальные метаданные в архиве phar</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::delMetadata</methodname>
<void/>
</methodsynopsis>
&phar.write;
<para>
Удаляет глобальные метаданные в архиве phar
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &true; в случае успеха, но лучше использовать проверку исключений.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Бросает исключение <classname>PharException</classname> в случае ошибки при
сохранении изменений на диск.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::delMetaData</function></title>
<programlisting role="php">
<![CDATA[
<?php
try {
$phar = new Phar('myphar.phar');
var_dump($phar->getMetadata());
$phar->setMetadata("hi there");
var_dump($phar->getMetadata());
$phar->delMetadata();
var_dump($phar->getMetadata());
} catch (Exception $e) {
// handle errors
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
NULL
string(8) "hi there"
NULL
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::getMetadata</function></member>
<member><function>Phar::setMetadata</function></member>
<member><function>Phar::hasMetadata</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: e4725d85c5d955053a090d2e14fc5c5d446dc128 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.extractto" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::extractTo</refname>
<refpurpose>Извлечь содержимое phar-архива в директорию</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::extractTo</methodname>
<methodparam><type>string</type><parameter>pathto</parameter></methodparam>
<methodparam choice="opt"><type>string|array</type><parameter>files</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>overwrite</parameter><initializer>false</initializer></methodparam>
</methodsynopsis>
<para>
Извлекает все файлы phar-архива на диск. Извлеченные файлы и директории сохраняют
все разрешения, которые у них были. Опциональные параметры позволяют контролировать,
какие именно файлы извлекать и нужно ли перезаписывать уже существующие.
Второй параметр <parameter>files</parameter> может быть как именем файла, так и
путем директории, которые надо извлекать. По умолчанию, уже существующие на диске
файлы перезаписываться не будут. Для указания, что нужно использовать перезапись,
используется третий параметр.
Этот метод аналогичен методу <function>ZipArchive::extractTo</function>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>pathto</parameter></term>
<listitem>
<para>
Путь, по которому необходимо сохраните извлеченные файлы (<parameter>files</parameter>)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>files</parameter></term>
<listitem>
<para>
Имя файла или директории, которые надо извлечь. Либо архив с именами файлов/директорий
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>overwrite</parameter></term>
<listitem>
<para>
Установите в &true;, если необходимо перезаписывать уже существующие файлы
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &true; в случае успеха. Но лучше использовать механизм перехвата исключений для контроля успешности.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Бросает исключение <classname>PharException</classname> в случае ошибки записи на диск.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::extractTo</function></title>
<programlisting role="php">
<![CDATA[
<?php
try {
$phar = new Phar('myphar.phar');
$phar->extractTo('/full/path'); // извлечь все файлы
$phar->extractTo('/another/path', 'file.txt'); // извлечь только file.txt
$phar->extractTo('/this/path',
array('file1.txt', 'file2.txt')); // извлечь два указанных файла
$phar->extractTo('/third/path', null, true); // извлечь все файлы, использовать перезапись
} catch (Exception $e) {
// handle errors
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>PharData::extractTo</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.getmetadata">
<refnamediv>
<refname>Phar::getMetadata</refname>
<refpurpose>Извлечь мета-данные phar-архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>mixed</type><methodname>Phar::getMetadata</methodname>
<void/>
</methodsynopsis>
<para>
Возвращает мета-данные phar-архива. Мета-данными может быть любая переменная PHP, которая может быть сериализована.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
Без параметров.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
любая переменная PHP, которая может быть сериализована и сохранена как мета-данные
Phar-архива, либо &null;, если мета-данные отсутствуют.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::getMetadata</function></title>
<para>
</para>
<programlisting role="php">
<![CDATA[
<?php
// Убедимся, что архим не существует
@unlink('brandnewphar.phar');
try {
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p['file.php'] = '<?php echo "hello";';
$p->setMetadata(array('bootstrap' => 'file.php'));
var_dump($p->getMetadata());
} catch (Exception $e) {
echo 'Could not modify phar:', $e;
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
array(1) {
["bootstrap"]=>
string(8) "file.php"
}
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::setMetadata</function></member>
<member><function>Phar::delMetadata</function></member>
<member><function>Phar::hasMetadata</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.getmodified">
<refnamediv>
<refname>Phar::getModified</refname>
<refpurpose>Определить, изменялся phar-архив</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::getModified</methodname>
<void/>
</methodsynopsis>
<para>
Этот метод используется для определения, изменялось ли что либо в
phar-архиве.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
Без параметров.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&true; - если архив после открытия изменялся и &false;, если нет.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.getsignature">
<refnamediv>
<refname>Phar::getSignature</refname>
<refpurpose>Получить MD5/SHA1/SHA256/SHA512/OpenSSL подпись Phar-архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>array</type><methodname>Phar::getSignature</methodname>
<void/>
</methodsynopsis>
<para>
Возвращает проверочную подпись phar-архива в виде строки шестнадцатеричных цифр.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Массив, содержащий цифровую подпись открытого архива по ключу <literal>hash</literal>,
и <literal>MD5</literal>, <literal>SHA-1</literal>, <literal>SHA-256</literal>,
<literal>SHA-512</literal> или <literal>OpenSSL</literal> по ключу
<literal>hash_type</literal>. Подпись - это хеш, вычесленный от содержимого
архива, которую можно использовать для проверки его целосности.
Корректная подпись требуется для всех запускаемых phar-архивов, если разрешена
INI-переменная <link linkend="ini.phar.require-hash">phar.require_hash</link>.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.getstub">
<refnamediv>
<refname>Phar::getStub</refname>
<refpurpose>Получить код загрузчика Phar-архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>string</type><methodname>Phar::getStub</methodname>
<void/>
</methodsynopsis>
<para>
Phar-архивы содержат загрузчик (<literal>stub</literal>), написанный на
PHP, который запускается при запуске архива, когда его подключают через include:
<programlisting role="php">
<![CDATA[
<?php
include 'myphar.phar';
?>
]]>
</programlisting>
или просто запускают:
<screen>
<![CDATA[
php myphar.phar
]]>
</screen>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает строку, содержащую текст загрузчика текущего Phar-архива.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Бросает исключение <classname>RuntimeException</classname>, если по каким либо
причинам не может получить текст загрузчика.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::getStub</function></title>
<programlisting role="php">
<![CDATA[
<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
echo $p->getStub();
echo "==NEXT==\n";
$p->setStub("<?php
function __autoload($class)
{
include 'phar://' . str_replace('_', '/', $class);
}
Phar::mapPhar('myphar.phar');
include 'phar://myphar.phar/startup.php';
__HALT_COMPILER(); ?>");
echo $p->getStub();
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
<?php __HALT_COMPILER(); ?>
==NEXT==
<?php
function __autoload($class)
{
include 'phar://' . str_replace('_', '/', $class);
}
Phar::mapPhar('myphar.phar');
include 'phar://myphar.phar/startup.php';
__HALT_COMPILER(); ?>
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::setStub</function></member>
<member><function>Phar::createDefaultStub</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.getsupportedsignatures" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::getSupportedSignatures</refname>
<refpurpose>Получить массив поддерживаемых алгоритмов подписи архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>array</type><methodname>Phar::getSupportedSignatures</methodname>
<void/>
</methodsynopsis>
<para>
Возвращает массив поддерживаемых алгоритмов подписи архива
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
Без параметров.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает массив примерно такого содержания: <literal>MD5</literal>, <literal>SHA-1</literal>,
<literal>SHA-256</literal>, <literal>SHA-512</literal>, <literal>OpenSSL</literal>.
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::getSignature</function></member>
<member><function>Phar::setSignatureAlgorithm</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.getversion">
<refnamediv>
<refname>Phar::getVersion</refname>
<refpurpose>Получить версию Phar-архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>string</type><methodname>Phar::getVersion</methodname>
<void/>
</methodsynopsis>
<para>
Возвращает версию API открытого Phar-архива.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Версия API открытого архива. Не перепутайте с версией API загруженного
расширения phar. Каждый Phar-архив имеет жестко прописанную версию API,
с помощью которого его создавали, в манифесте.
Подробную документацию можно почитать на странице <link linkend="phar.fileformat">Формат файла Phar</link>.
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::apiVersion</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.hasmetadata" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::hasMetadata</refname>
<refpurpose>Проверить, содержит ли phar-архив глобальные метаданные</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::hasMetadata</methodname>
<void/>
</methodsynopsis>
<para>
Проверяет, содержит ли phar-архив глобальные метаданные.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
Без параметров.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &true; или &false;.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::hasMetadata</function></title>
<programlisting role="php">
<![CDATA[
<?php
try {
$phar = new Phar('myphar.phar');
var_dump($phar->hasMetadata());
$phar->setMetadata(array('thing' => 'hi'));
var_dump($phar->hasMetadata());
$phar->delMetadata();
var_dump($phar->hasMetadata());
} catch (Exception $e) {
// handle error
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
bool(false)
bool(true)
bool(false)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::getMetadata</function></member>
<member><function>Phar::setMetadata</function></member>
<member><function>Phar::delMetadata</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.interceptfilefuncs" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::interceptFileFuncs</refname>
<refpurpose>Указывает phar перехватывать fopen, file_get_contents, opendir и все stat-функции</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>void</type><methodname>Phar::interceptFileFuncs</methodname>
<void/>
</methodsynopsis>
<para>
Указывает phar перехватывать <function>fopen</function>, <function>readfile</function>,
<function>file_get_contents</function>, <function>opendir</function> и все
stat-функции. Если какая либо из этих функций будет вызвана из phar-архива с
относительным путем, то вызов будет модифицирован для доступа к содержимому
архива. В случае с абсолютными путями будут работать штатные функции доступа
к файловой системе.
</para>
<para>
Эта функция позволяет писать приложения работающие не привязанные к жесткому диску.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
No parameters.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::interceptFileFuncs</function></title>
<programlisting role="php">
<![CDATA[
<?php
Phar::interceptFileFuncs();
include 'phar://' . __FILE__ . '/file.php';
?>
]]>
</programlisting>
</example>
</para>
<para>
Предположим, что у нас есть <literal>/path/to/myphar.phar</literal> и в нем
содержатся файлы <literal>file.php</literal> и
<literal>file2.txt</literal>. <literal>file.php</literal> содержит такой код:
</para>
<para>
<example>
<title>Пример использования <function>Phar::interceptFileFuncs</function></title>
<programlisting role="php">
<![CDATA[
<?php
echo file_get_contents('file2.txt');
?>
]]>
</programlisting>
</example>
</para>
<para>
В обычном режиме, PHP будет искать <literal>file2.txt</literal> в текущей директории,
являющейся директорией запуска file.php, либо текущей директорией в случае
использования командной строки. <function>Phar::interceptFileFuncs</function> укажет
PHP, что текущая директория - это <literal>phar:///path/to/myphar.phar/</literal> и,
для примера выше, будет открыт файл
<literal>phar:///path/to/myphar.phar/file2.txt</literal>.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.isbuffering">
<refnamediv>
<refname>Phar::isBuffering</refname>
<refpurpose>Проверить, будут ли операции с Phar-архивом буферизованы или записаны напрямую на диск</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::isBuffering</methodname>
<void/>
</methodsynopsis>
<para>
Проверяет, будут ли операции с Phar-архивом сразу записаны
на диск или для этого надо вызывать <function>Phar::stopBuffering</function>.
</para>
<para>
Настройки буферизации индивидуальны для каждого архива.
Включенная буферизация для <literal>foo.phar</literal> никак не влияет
на режим работы с <literal>bar.phar</literal>.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &true; или &false;.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::isBuffering</function></title>
<para>
</para>
<programlisting role="php">
<![CDATA[
<?php
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p2 = new Phar('existingphar.phar');
$p['file1.txt'] = 'hi';
var_dump($p->isBuffering());
var_dump($p2->isBuffering());
?>
=2=
<?php
$p->startBuffering();
var_dump($p->isBuffering());
var_dump($p2->isBuffering());
$p->stopBuffering();
?>
=3=
<?php
var_dump($p->isBuffering());
var_dump($p2->isBuffering());
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
bool(false)
bool(false)
=2=
bool(true)
bool(false)
=3=
bool(false)
bool(false)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::startBuffering</function></member>
<member><function>Phar::stopBuffering</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.isfileformat" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::isFileFormat</refname>
<refpurpose>Проверить, что phar-архив имеет заданный формат (tar/phar/zip)</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::isFileFormat</methodname>
<methodparam><type>int</type><parameter>format</parameter></methodparam>
</methodsynopsis>
<para>
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>format</parameter></term>
<listitem>
<para>
<literal>Phar::PHAR</literal>, <literal>Phar::TAR</literal> или
<literal>Phar::ZIP</literal>, в зависимости от проверяемого формата.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &true;, если phar-архив имеет указанный формат
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
В случае задания некорректного формата будет выброшено исключение <classname>PharException</classname>.
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::convertToExecutable</function></member>
<member><function>Phar::convertToData</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.isvalidpharfilename" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::isValidPharFilename</refname>
<refpurpose>Проверяет, что заданное имя файла является корректным именем phar-архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>bool</type><methodname>Phar::isValidPharFilename</methodname>
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>executable</parameter><initializer>true</initializer></methodparam>
</methodsynopsis>
<para>
Проверяет, что заданное имя файла является корректным именем phar-архива.
Можно использовать для проверки имени файла до момента его непосредственного
создания, дабы избежать нежелательных исключений.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>filename</parameter></term>
<listitem>
<para>
Имя или полный путь до файла, который еще не создан
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>executable</parameter></term>
<listitem>
<para>
Этот параметр определяет, должен ли файл опозноваться как
запускаемый phar-архив, или как незапускаемый архив с данными
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &true; или &false;.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.iswritable" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::isWritable</refname>
<refpurpose>Проверяет, можно ли модифицировать phar-архив</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::isWritable</methodname>
<void/>
</methodsynopsis>
<para>
Этот метод возвращает &true; если <literal>phar.readonly</literal> установлен в
<literal>0</literal>, архив существует и доступен для записи.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
Параметров нет.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &true; если архив можно модифицировать
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::canWrite</function></member>
<member><function>PharData::isWritable</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.loadphar">
<refnamediv>
<refname>Phar::loadPhar</refname>
<refpurpose>Загрузить phar-архив с псевдонимом</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>bool</type><methodname>Phar::loadPhar</methodname>
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>alias</parameter></methodparam>
</methodsynopsis>
<para>
Может использоваться для загрузки внешнего Phar-архива.
То, что для phar-архива назначается псевдоним, позволяет в дальнейшем
использовать более короткие ссылки для доступа к нему или же для загрузки архивов Phar,
содержащих только данные и не предназначеных для выполнения.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>filename</parameter></term>
<listitem>
<para>
Путь к загружаемому phar-архиву
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>alias</parameter></term>
<listitem>
<para>
Псевдоним для доступа к архиву. Обратите внимание, что многие
phar-архивы имеют свой явно заданный псевдоним и, при задании нового псевдонима,
будет выброшено исключение <classname>PharException</classname>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Если задан параметр с псевдонимом, а загружаемый архив уже имеет псевдоним, то будет
выброшено исключение <classname>PharException</classname>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::loadPhar</function></title>
<para>
Phar::loadPhar можно использовать где угодно, тогда как
Phar::mapPhar только в загрузчике (stub) Phar-архива.
</para>
<programlisting role="php">
<![CDATA[
<?php
try {
Phar::loadPhar('/path/to/phar.phar', 'my.phar');
echo file_get_contents('phar://my.phar/file.txt');
} catch (PharException $e) {
echo $e;
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::mapPhar</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.mapphar">
<refnamediv>
<refname>Phar::mapPhar</refname>
<refpurpose>Прочитать текущий запущенный phar-архив и зарегистрировать его манифест</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>bool</type><methodname>Phar::mapPhar</methodname>
<methodparam choice="opt"><type>string</type><parameter>alias</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>dataoffset</parameter><initializer>0</initializer></methodparam>
</methodsynopsis>
<para>
Этот статический метод можно использовать только в загрузчике (stub)
Phar-архива в целях его инициализации, когда он запущен напрямую, либо
включен в другой скрипт.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>alias</parameter></term>
<listitem>
<para>
Псевдоним можно использовать в обертках <literal>phar://</literal>, ссылаясь
на этот архив, вместо использования полного пути.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>dataoffset</parameter></term>
<listitem>
<para>
Неиспользуемая переменная. Существует только для совместимости с PEAR-пакетом
PHP_Archive.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Выбрасывается исключение <classname>PharException</classname>, если вызывается
из скрипта, в котором не обнаружено токена __HALT_COMPILER();, либо если
файл недоступен для чтения.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::mapPhar</function></title>
<para>
Phar::loadPhar можно использовать где угодно, тогда как
Phar::mapPhar только в загрузчике (stub) Phar-архива.
</para>
<para>
Простой загрузчик Phar, использующий mapPhar.
</para>
<programlisting role="php">
<![CDATA[
<?php
function __autoload($class)
{
include 'phar://me.phar/' . str_replace('_', '/', $class) . '.php';
}
try {
Phar::mapPhar('me.phar');
include 'phar://me.phar/startup.php';
} catch (PharException $e) {
echo $e->getMessage();
die('Cannot initialize Phar');
}
__HALT_COMPILER();
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::loadPhar</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,163 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.mount" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::mount</refname>
<refpurpose>Монтирование внешнего путь или файла к виртуальному пути в phar-архиве</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>void</type><methodname>Phar::mount</methodname>
<methodparam><type>string</type><parameter>pharpath</parameter></methodparam>
<methodparam><type>string</type><parameter>externalpath</parameter></methodparam>
</methodsynopsis>
<para>
Очень похоже на концепцию файловой системы unix по монтированию внешнего
устройства в существующее дерево директорий. <function>Phar::mount</function>
позволяет ссылаться на внешние файлы и директории, как будто они находятся
внутри архива. Это позволяет повысить уровень абстракции обращаясь ко внешним
конфигурационным файлам так, как будто они являются частью архива.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>pharpath</parameter></term>
<listitem>
<para>
Внутренний путь в архиве, по которому необходимо примонтировать внешний путь.
Это должен быть не существующий относительный путь внутри архива.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>externalpath</parameter></term>
<listitem>
<para>
Путь или URL внешнего файла или директории
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Ничего не возвращает. В случае ошибки бросает исключение <classname>PharException</classname>.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Бросает исключение <classname>PharException</classname> при возникновении ошибок.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::mount</function></title>
<para>
В следующем примере демонстрируется доступ к внешнему конфигурационному файлу,
как будто он находится внутри архива.
</para>
<para>
Для начала код, содержащийся в архиве:
</para>
<programlisting role="php">
<![CDATA[
<?php
$configuration = simplexml_load_string(file_get_contents(
Phar::running(false) . '/config.xml'));
?>
]]>
</programlisting>
<para>
Далее внешний код, монтирующий файл в архив:
</para>
<programlisting role="php">
<![CDATA[
<?php
// для начала настроим ассоциацию между абстрактным config.xml
// и конкретным файлом на диске
Phar::mount('phar://config.xml', '/home/example/config.xml');
// а теперь запускаем приложение
include '/path/to/archive.phar';
?>
]]>
</programlisting>
<para>
Другой метод - поместить монтирующий код а загрузчик (stub) внутрь архива.
Пример использования конфигурационного файла по умолчанию,
если пользовательский файл конфигурации не задан:
</para>
<programlisting role="php">
<![CDATA[
<?php
// для начала настроим ассоциацию между абстрактным config.xml
// и конкретным файлом на диске
if (defined('EXTERNAL_CONFIG')) {
Phar::mount('config.xml', EXTERNAL_CONFIG);
if (file_exists(__DIR__ . '/extra_config.xml')) {
Phar::mount('extra.xml', __DIR__ . '/extra_config.xml');
}
} else {
Phar::mount('config.xml', 'phar://' . __FILE__ . '/default_config.xml');
Phar::mount('extra.xml', 'phar://' . __FILE__ . '/default_extra.xml');
}
// а теперь запускаем приложение
include 'phar://' . __FILE__ . '/index.php';
__HALT_COMPILER();
?>
]]>
</programlisting>
<para>
... и код для загрузки этого phar-архива:
</para>
<programlisting role="php">
<![CDATA[
<?php
define('EXTERNAL_CONFIG', '/home/example/config.xml');
// а теперь запускаем приложение
include '/path/to/archive.phar';
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.mungserver" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::mungServer</refname>
<refpurpose>Определить список до четырех $_SERVER-переменных, которые должны быть изменены для запуска</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>void</type><methodname>Phar::mungServer</methodname>
<methodparam><type>array</type><parameter>munglist</parameter></methodparam>
</methodsynopsis>
<para>
Функция <function>Phar::mungServer</function> должна вызываться только в загрузчике.
</para>
<para>
Определяет список до четырех <varname>$_SERVER</varname>-переменных, которые
необходимо модифицировать для запуска.
Модификация заключается в удалении следов запуска из phar-архива для
переменных <literal>REQUEST_URI</literal>, <literal>PHP_SELF</literal>,
<literal>SCRIPT_NAME</literal> и <literal>SCRIPT_FILENAME</literal>.
</para>
<para>
Сам по себе этот метод ничего не делает. Эффект достигается только в комбинации
с <function>Phar::webPhar</function> и только если запрошенный файл является
PHP-файлом для разбора. Обратите внимание, что переменные
<literal>PATH_INFO</literal> и <literal>PATH_TRANSLATED</literal> всегда
модифицированы.
</para>
<para>
Оригинальные значения изменяемых переменных будут сохранены в массиве SERVER
с префиксами <literal>PHAR_</literal>. Например, оригинальное значение
<literal>SCRIPT_NAME</literal> будет записано в <literal>PHAR_SCRIPT_NAME</literal>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>munglist</parameter></term>
<listitem>
<para>
Массив, содержащий комбинацию из:
<literal>REQUEST_URI</literal>, <literal>PHP_SELF</literal>,
<literal>SCRIPT_NAME</literal> и <literal>SCRIPT_FILENAME</literal>.
Любые другие значения вызывут исключение.
Обратите внимание, что функция <function>Phar::mungServer</function> чуствительна к
регистру символов.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Ничего не возвращает.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Бросает исключение <classname>UnexpectedValueException</classname>, если входные
данные некоректны.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::mungServer</function></title>
<programlisting role="php">
<![CDATA[
<?php
// пример загрузчика
Phar::mungServer(array('REQUEST_URI'));
Phar::webPhar();
__HALT_COMPILER();
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::webPhar</function></member>
<member><function>Phar::setStub</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.offsetexists">
<refnamediv>
<refname>Phar::offsetExists</refname>
<refpurpose>Определить, есть ли файл в архиве</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::offsetExists</methodname>
<methodparam><type>string</type><parameter>offset</parameter></methodparam>
</methodsynopsis>
<para>
Это реализация интерфейса <interfacename>ArrayAccess</interfacename>,
позволяющаа манипулировать содержимым Phar-архива в стиле доступа к элементам
массива.
</para>
<para>
offsetExists() запускается каждый раз, когда вызывается <function>isset</function>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>offset</parameter></term>
<listitem>
<para>
Имя файла (относительный путь).
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &true;, если файл присутствует в архиве и &false;, если нет.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::offsetExists</function></title>
<programlisting role="php">
<![CDATA[
<?php
$p = new Phar(dirname(__FILE__) . '/my.phar', 0, 'my.phar');
$p['firstfile.txt'] = 'первый файл';
$p['secondfile.txt'] = 'второй файл';
// в следующих строках offsetExists() вызывается косвенно
var_dump(isset($p['firstfile.txt']));
var_dump(isset($p['nothere.txt']));
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
bool(true)
bool(false)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::offsetGet</function></member>
<member><function>Phar::offsetSet</function></member>
<member><function>Phar::offsetUnset</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.offsetget">
<refnamediv>
<refname>Phar::offsetGet</refname>
<refpurpose>Получить объект <classname>PharFileInfo</classname> для конкретного файла</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>int</type><methodname>Phar::offsetGet</methodname>
<methodparam><type>string</type><parameter>offset</parameter></methodparam>
</methodsynopsis>
<para>
Это реализация интерфейса <interfacename>ArrayAccess</interfacename>,
позволяющаа манипулировать содержимым Phar-архива в стиле доступа к элементам
массива. <methodname>Phar::offsetGet</methodname> используется для
извлечения файлов из архива.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>offset</parameter></term>
<listitem>
<para>
Имя файла (относительный путь).
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Объект класса <classname>PharFileInfo</classname>. Можно использовать
для получения информации о файле и для извлечения контента через итерирование.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Бросает исключение <classname>BadMethodCallException</classname>, если такого файла нет.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::offsetGet</function></title>
<para>
Как и для любого другого класса, реализующего <classname>ArrayAccess</classname>,
метод <methodname>Phar::offsetGet</methodname> будет вызван автоматически
при использовании оператора <literal>[]</literal>.
</para>
<programlisting role="php">
<![CDATA[
<?php
$p = new Phar(dirname(__FILE__) . '/myphar.phar', 0, 'myphar.phar');
$p['exists.txt'] = "file exists\n";
try {
// автоматический вызов offsetGet()
echo $p['exists.txt'];
echo $p['doesnotexist.txt'];
} catch (BadMethodCallException $e) {
echo $e;
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
file exists
Entry doesnotexist.txt does not exist
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::offsetExists</function></member>
<member><function>Phar::offsetSet</function></member>
<member><function>Phar::offsetUnset</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.offsetset">
<refnamediv>
<refname>Phar::offsetSet</refname>
<refpurpose>Изменение содержимого файла</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>Phar::offsetSet</methodname>
<methodparam><type>string</type><parameter>offset</parameter></methodparam>
<methodparam><type>string</type><parameter>value</parameter></methodparam>
</methodsynopsis>
&phar.write;
<para>
Это реализация интерфейса <interfacename>ArrayAccess</interfacename>,
позволяющаа манипулировать содержимым Phar-архива в стиле доступа к элементам
массива. offsetSet используется для изменения контента существующего
файла, либо для создания нового.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>offset</parameter></term>
<listitem>
<para>
Имя файла (относительный путь).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>value</parameter></term>
<listitem>
<para>
Содержимое файла.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Ничего не возвращает.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Если <link linkend="ini.phar.readonly">phar.readonly</link> установлен в
<literal>1</literal>, то будет выброшено исключение
<classname>BadMethodCallException</classname>, так как модифицировать Phar-архив
можно только, если phar.readonly равен <literal>0</literal>. Если возникнут
какие либо проблемы с записью на диск - будет выброшено исключение
<classname>PharException</classname>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::offsetSet</function></title>
<para>
offsetSet не нужно вызывать напрямую. Используйте синтаксис <literal>[]</literal>.
</para>
<programlisting role="php">
<![CDATA[
<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
try {
// вызов offsetSet
$p['file.txt'] = 'Hi there';
} catch (Exception $e) {
echo 'Не могу изменить file.txt:', $e;
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::offsetExists</function></member>
<member><function>Phar::offsetGet</function></member>
<member><function>Phar::offsetUnset</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.offsetunset">
<refnamediv>
<refname>Phar::offsetUnset</refname>
<refpurpose>Удалить файл из phar-архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::offsetUnset</methodname>
<methodparam><type>string</type><parameter>offset</parameter></methodparam>
</methodsynopsis>
&phar.write;
<para>
Это реализация интерфейса <interfacename>ArrayAccess</interfacename>,
позволяющаа манипулировать содержимым Phar-архива в стиле доступа к элементам
массива. offsetUnset используется для удаления файлов и запускается каждый раз,
когда используется конструкция <function>unset</function>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>offset</parameter></term>
<listitem>
<para>
Имя файла (относительный путь).
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Если <link linkend="ini.phar.readonly">phar.readonly</link> установлен в
<literal>1</literal>, то будет выброшено исключение
<classname>BadMethodCallException</classname>, так как модифицировать Phar-архив
можно только, если phar.readonly равен <literal>0</literal>. Если возникнут
какие либо проблемы с записью на диск - будет выброшено исключение
<classname>PharException</classname>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::offsetUnset</function></title>
<programlisting role="php">
<![CDATA[
<?php
$p = new Phar('/path/to/my.phar', 0, 'my.phar');
try {
// удаляет file.txt из my.phar путем вызова offsetUnset
unset($p['file.txt']);
} catch (Exception $e) {
echo 'Could not delete file.txt: ', $e;
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::offsetExists</function></member>
<member><function>Phar::offsetGet</function></member>
<member><function>Phar::offsetSet</function></member>
<member><function>Phar::unlinkArchive</function></member>
<member><function>Phar::delete</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.running" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::running</refname>
<refpurpose>Получить полный путь на диске, либо полный URL запущенного Phar-архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>string</type><methodname>Phar::running</methodname>
<methodparam choice="opt"><type>bool</type><parameter>retphar</parameter><initializer>true</initializer></methodparam>
</methodsynopsis>
<para>
Возвращает полный путь запущенного phar-архива. Используется для того же, для
чего используется константа <literal>__FILE__</literal> и работает только внутри
запущенного phar-архива.
</para>
<para>
При запуске <function>Phar::running</function> из загрузчика результат будет
<literal>&quot;&quot;</literal>. Внутри загрузчика используйте
константу <constant>__FILE__</constant>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>retphar</parameter></term>
<listitem>
<para>
Если &false;, то будет возвращен полный дисковый путь к phar-архиву.
Если &true;, то будет возвращен полный URL.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Вернет путь, если он корректен, либо пустую строку.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::running</function></title>
<para>
Для следующего примера предположим, что архив лежит по пути
<literal>/path/to/phar/my.phar</literal>.
</para>
<programlisting role="php">
<![CDATA[
<?php
$a = Phar::running(); // $a равно "phar:///path/to/my.phar"
$b = Phar::running(false); // $b равно "/path/to/my.phar"
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.setalias" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::setAlias</refname>
<refpurpose>Установить псевдоним для Phar-архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::setAlias</methodname>
<methodparam><type>string</type><parameter>alias</parameter></methodparam>
</methodsynopsis>
&phar.write;
<para>
Устанавливает псевдоним для Phar-архива и записывает его как постоянный
псевдоним для этого архива. Псевдоним можно использовать внутри phar-архива для
уверенности в том, что доступ через потоковую обертку <literal>phar</literal> для
доступа к внутренним файлам будет работать всегда, независимо от местоположения
phar-архива на файловой системе. Другой альтернативой является надежда на
перехват <function>include</function> или использование
<function>Phar::interceptFileFuncs</function> совместно с относительными путями.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>alias</parameter></term>
<listitem>
<para>
Короткое имя, которое можно будет использовать с доступом
через потоковую обертку <literal>phar</literal>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Бросает исключение <classname>UnexpectedValueException</classname>, если
досьтуп запрещен и <classname>PharException</classname>, если псевдоним
уже используется, или возникли проблемы с записью на диск.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::setAlias</function></title>
<programlisting role="php">
<![CDATA[
<?php
try {
$phar = new Phar('myphar.phar');
$phar->setAlias('myp.phar');
} catch (Exception $e) {
// обрабатываем ошибки
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::__construct</function></member>
<member><function>Phar::interceptFileFuncs</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.setdefaultstub">
<refnamediv>
<refname>Phar::setDefaultStub</refname>
<refpurpose>Установить в качестве загрузчика (stub) загрузчик по умолчанию</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::setDefaultStub</methodname>
<methodparam choice="opt"><type>string</type><parameter>index</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>webindex</parameter></methodparam>
</methodsynopsis>
&phar.write;
<para>
Этот метод комбинирует функционал двух других методов,
<function>Phar::createDefaultStub</function> и <function>Phar::setStub</function>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>index</parameter></term>
<listitem>
<para>
Относительный путь в phar-архиве для запуска при доступе из командной строки
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>webindex</parameter></term>
<listitem>
<para>
Относительный путь в phar-архиве для запуска при доступе из веб-браузера
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Будет брошено исключение <classname>UnexpectedValueException</classname>,
если <link linkend="ini.phar.readonly">phar.readonly</link> разрешено в php.ini.
В случае проблем с записью на диск будет выброшено исключение
<classname>PharException</classname>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::setDefaultStub</function></title>
<para>
</para>
<programlisting role="php">
<![CDATA[
<?php
try {
$phar = new Phar('myphar.phar');
$phar->setDefaultStub('cli.php', 'web/index.php');
// это аналогично такому коду:
// $phar->setStub($phar->createDefaultStub('cli.php', 'web/index.php'));
} catch (Exception $e) {
// handle errors
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::setStub</function></member>
<member><function>Phar::createDefaultStub</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,128 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xml:id="phar.setmetadata">
<refnamediv>
<refname>Phar::setMetadata</refname>
<refpurpose>Установить мета-данные phar-архива</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>Phar::setMetadata</methodname>
<methodparam><type>mixed</type><parameter>metadata</parameter></methodparam>
</methodsynopsis>
&phar.write;
<para>
Функция <function>Phar::setMetadata</function> используется для сохранения
данных, характеризующих phar-архив в целом.
<function>PharFileInfo::setMetadata</function> используется для установки мета-данных
для конкретного файла. Если мета-данных будет много, то это может снизить
скорость загрузки phar-архива.
</para>
<para>
Мета-данные можно использовать, например, для указания, какой файл должен
исполняться при загрузке, или для указагния местоположения манифеста,
типа package.xml для модуля <link xlink:href="&url.pear;">PEAR</link>.
В общем, любые полезные в контексте phar-архива данные.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>metadata</parameter></term>
<listitem>
<para>
Любая переменная PHP, содержащая необходимую информацию
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::setMetadata</function></title>
<para>
</para>
<programlisting role="php">
<![CDATA[
<?php
// удалим, на всякий случай
@unlink('brandnewphar.phar');
try {
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p['file.php'] = '<?php echo "привет"';
$p->setMetadata(array('bootstrap' => 'file.php'));
var_dump($p->getMetadata());
} catch (Exception $e) {
echo 'Не могу создать/изменить phar:', $e;
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
array(1) {
["bootstrap"]=>
string(8) "file.php"
}
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::getMetadata</function></member>
<member><function>Phar::delMetadata</function></member>
<member><function>Phar::hasMetadata</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.setsignaturealgorithm" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::setSignatureAlgorithm</refname>
<refpurpose>Установить алгоритм подписания phar-архива и применение его</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>Phar::setSignatureAlgorithm</methodname>
<methodparam><type>int</type><parameter>sigtype</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>privatekey</parameter></methodparam>
</methodsynopsis>
&phar.write;
<para>
Устанавливает алгоритм подписания phar-архива и применяет его.
Доступны следующие алгоритмы подписания: <literal>Phar::MD5</literal>,
<literal>Phar::SHA1</literal>, <literal>Phar::SHA256</literal>,
<literal>Phar::SHA512</literal> и <literal>Phar::OPENSSL</literal>.
</para>
<para>
Обратите внимание, что для всех исполняемых phar-архивов подпись создается
автоматически, с использованием по умолчанию <literal>SHA1</literal>.
Архивы с данными на основе tar или zip
(созданные с помощью класса <classname>PharData</classname>) должны иметь
явно созданную с помощью <function>Phar::setSignatureAlgorithm</function> подпись.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>sigtype</parameter></term>
<listitem>
<para>
Одна из констант: <literal>Phar::MD5</literal>,
<literal>Phar::SHA1</literal>, <literal>Phar::SHA256</literal>,
<literal>Phar::SHA512</literal> или <literal>Phar::OPENSSL</literal>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>privatekey</parameter></term>
<listitem>
<para>
Секретный ключ OpenSSL, извлеченный из сертификата, либо файл с ключем OpenSSL:
<programlisting role="php">
<![CDATA[
<?php
$private = openssl_get_privatekey(file_get_contents('private.pem'));
$pkey = '';
openssl_pkey_export($private, $pkey);
$p->setSignatureAlgorithm(Phar::OPENSSL, $pkey);
?>
]]>
</programlisting>
Подробности об именовании и размещении файла открытого ключа
читайте в разделе <link linkend="phar.using">введение в phar</link>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Бросает исключение <classname>UnexpectedValueException</classname>
при любых ошибках, кроме ошибок записи на диск. При ошибках записи на диск
бросает исключение <classname>PharException</classname>.
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::getSupportedSignatures</function></member>
<member><function>Phar::getSignature</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,184 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.setstub">
<refnamediv>
<refname>Phar::setStub</refname>
<refpurpose>Добавить загрузчик(stub) в Phar-архив</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>bool</type><methodname>Phar::setStub</methodname>
<methodparam><type>string</type><parameter>stub</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>len</parameter><initializer>-1</initializer></methodparam>
</methodsynopsis>
&phar.write;
<para>
Этот метод используется для добавления PHP-загрузчика в новый Phar-архив, либо
для замены уже существующего загрузчика.
</para>
<para>
Загрузчик используется при подключении Phar-архива с помощью included:
</para>
<programlisting role="php">
<![CDATA[
<?php
include 'myphar.phar';
?>
]]>
</programlisting>
<para>
Загрузчик не используется, когда архив подключается с использованием обертки
<literal>phar</literal>, как в примере ниже:
</para>
<programlisting role="php">
<![CDATA[
<?php
include 'phar://myphar.phar/somefile.php';
?>
]]>
</programlisting>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>stub</parameter></term>
<listitem>
<para>
Строка, либо открытый ресурс потока.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>len</parameter></term>
<listitem>
<para>
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Будет брошено исключение <classname>UnexpectedValueException</classname>,
если <link linkend="ini.phar.readonly">phar.readonly</link> разрешено в php.ini.
В случае проблем с записью на диск будет выброшено исключение
<classname>PharException</classname>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::setStub</function></title>
<para>
</para>
<programlisting role="php">
<![CDATA[
<?php
try {
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p['a.php'] = '<?php var_dump("Hello");';
$p->setStub('<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
include 'phar://brandnewphar.phar/a.php';
var_dump($p->getStub());
$p['b.php'] = '<?php var_dump("World");';
$p->setStub('<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>');
include 'phar://brandnewphar.phar/b.php';
var_dump($p->getStub());
} catch (Exception $e) {
echo 'Write operations failed on brandnewphar.phar: ', $e;
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
string(5) "Hello"
string(82) "<?php var_dump("First"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>"
string(5) "World"
string(83) "<?php var_dump("Second"); Phar::mapPhar("brandnewphar.phar"); __HALT_COMPILER(); ?>"
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>5.4.0</entry>
<entry>
Добавлен параметр <parameter>len</parameter>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::getStub</function></member>
<member><function>Phar::createDefaultStub</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.startbuffering">
<refnamediv>
<refname>Phar::startBuffering</refname>
<refpurpose>Запускает буферизацию операций записи, отключая запись изменений Phar-архива на диск</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>Phar::startBuffering</methodname>
<void/>
</methodsynopsis>
<para>
Метод <function>Phar::startBuffering</function> может дать значительный прирост
производительности при создании, либо модификации phar-архива с большим
количеством файлов. Обычно, когда добавляется новый файл, либо
изменяется существующий, запускается операция пересоздания phar-архива.
С включенной буферизацией архив будет пересоздан один раз в самом конце
внесения изменений.
</para>
<para>
Эта концепция работает аналогично транзакции в базе данных, что
позволяет сделать вне необходимые изменения и применить их
одновременно, в рамках одной операции. Такое поведение обеспечивает пара
методов <function>Phar::startBuffering</function>/<function>Phar::stopBuffering</function>.
</para>
<para>
Настройки буферизации индивидуальны для каждого архива.
Включенная буферизация для <literal>foo.phar</literal> никак не влияет
на режим работы с <literal>bar.phar</literal>.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::startBuffering</function></title>
<para>
</para>
<programlisting role="php">
<![CDATA[
<?php
// удалим на всякий случай
@unlink('brandnewphar.phar');
try {
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
} catch (Exception $e) {
echo 'не могу создать phar:', $e;
}
echo 'The new phar has ' . $p->count() . " entries\n";
$p->startBuffering();
$p['file.txt'] = 'hi';
$p['file2.txt'] = 'there';
$p['file2.txt']->setCompressedGZ();
$p['file3.txt'] = 'babyface';
$p['file3.txt']->setMetadata(42);
$p->setStub("<?php
function __autoload($class)
{
include 'phar://myphar.phar/' . str_replace('_', '/', $class) . '.php';
}
Phar::mapPhar('myphar.phar');
include 'phar://myphar.phar/startup.php';
__HALT_COMPILER();");
$p->stopBuffering();
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::stopBuffering</function></member>
<member><function>Phar::isBuffering</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="phar.stopbuffering">
<refnamediv>
<refname>Phar::stopBuffering</refname>
<refpurpose>Останавливает буферизацию и записывает все изменения на диск</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>Phar::stopBuffering</methodname>
<void/>
</methodsynopsis>
<para>
Метод <function>Phar::stopBuffering</function> используется совместно с
методом <function>Phar::startBuffering</function>.
<function>Phar::startBuffering</function> может дать значительный прирост
производительности при создании, либо модификации phar-архива с большим
количеством файлов. Обычно, когда добавляется новый файл, либо
изменяется существующий, запускается операция пересоздания phar-архива.
С включенной буферизацией архив будет пересоздан один раз в самом конце
внесения изменений.
</para>
<para>
Эта концепция работает аналогично транзакции в базе данных, что
позволяет сделать вне необходимые изменения и применить их
одновременно, в рамках одной операции. Такое поведение обеспечивает пара
методов <function>Phar::startBuffering</function>/<function>Phar::stopBuffering</function>.
</para>
<para>
Настройки буферизации индивидуальны для каждого архива.
Включенная буферизация для <literal>foo.phar</literal> никак не влияет
на режим работы с <literal>bar.phar</literal>.
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
В случае проблем с записью на диск будет выброшено исключение <classname>PharException</classname>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::stopBuffering</function></title>
<para>
</para>
<programlisting role="php">
<![CDATA[
<?php
$p = new Phar(dirname(__FILE__) . '/brandnewphar.phar', 0, 'brandnewphar.phar');
$p['file1.txt'] = 'hi';
$p->startBuffering();
var_dump($p->getStub());
$p->setStub("<?php
function __autoload(\$class)
{
include 'phar://brandnewphar.phar/' . str_replace('_', '/', \$class) . '.php';
}
Phar::mapPhar('brandnewphar.phar');
include 'phar://brandnewphar.phar/startup.php';
__HALT_COMPILER();");
$p->stopBuffering();
var_dump($p->getStub());
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
string(24) "<?php __HALT_COMPILER();"
string(195) "<?php
function __autoload($class)
{
include 'phar://' . str_replace('_', '/', $class);
}
Phar::mapPhar('brandnewphar.phar');
include 'phar://brandnewphar.phar/startup.php';
__HALT_COMPILER();"
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::startBuffering</function></member>
<member><function>Phar::isBuffering</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: d02c5d440d40731fa55938ff4e028eca84d54d82 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.unlinkarchive" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::unlinkArchive</refname>
<refpurpose>Полностью удалить архив из памяти и с диска</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>bool</type><methodname>Phar::unlinkArchive</methodname>
<methodparam><type>string</type><parameter>archive</parameter></methodparam>
</methodsynopsis>
<para>
Полностью удаляет архив из памяти и с диска.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>archive</parameter></term>
<listitem>
<para>
Путь к архиву на файловой системе.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
В случае присутствия открытых файловых дескрипторов к архиву или
объектов <classname>Phar</classname>, <classname>PharData</classname>,
<classname>PharFileInfo</classname>, ссылающихся на этот архив, будет выброшено
исключение <classname>PharException</classname>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::unlinkArchive</function></title>
<programlisting role="php">
<![CDATA[
<?php
// простое использование
Phar::unlinkArchive('/path/to/my.phar');
// более частый вариант использования:
$p = new Phar('my.phar');
$fp = fopen('phar://my.phar/file.txt', 'r');
// создается 'my.phar.gz'
$gp = $p->compress(Phar::GZ);
// удаляются все ссылки на архив
unset($p);
fclose($fp);
// удаляются все следы существования
Phar::unlinkArchive('my.phar');
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::delete</function></member>
<member><function>Phar::offsetUnset</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 656d1610af1a960d87c8b7056e54d0d4c75fb123 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="phar.webphar" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::webPhar</refname>
<refpurpose>mapPhar для phar-архивов на базе веб. Контроллер фронтэнда для веб-приложений</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>final</modifier> <modifier>public</modifier> <modifier>static</modifier> <type>void</type><methodname>Phar::webPhar</methodname>
<methodparam choice="opt"><type>string</type><parameter>alias</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter>index</parameter><initializer>"index.php"</initializer></methodparam>
<methodparam choice="opt"><type>string</type><parameter>f404</parameter></methodparam>
<methodparam choice="opt"><type>array</type><parameter>mimetypes</parameter></methodparam>
<methodparam choice="opt"><type>callable</type><parameter>rewrites</parameter></methodparam>
</methodsynopsis>
<para>
<function>Phar::mapPhar</function> для phar-архивов на базе веб. Этот метод разбиарет
<varname>$_SERVER['REQUEST_URI']</varname> и маршрутизирует запросы веб-браузера
к конкретному файлу в phar-архиве. Фактически это симуляция веб-сервера,
перенаправляющего запросы к корректным файлам, возвращающим правильные
заголовки и разбирающий PHP-файлы, если необходимо. Этот мощный метод является
частью того, что упрощает преобразование существующего PHP-приложения в phar-архив.
Совместно с <function>Phar::mungServer</function> и
<function>Phar::interceptFileFuncs</function> он помогает запускать любое веб-приложение
из phar-архива, никак его не меняя.
</para>
<para>
<function>Phar::webPhar</function> должен вызываться только из
загрузчика (stub) phar-архива (о том, что такое загрузчик и
как с ним работать, читайте <link linkend="phar.fileformat.stub">тут</link>).
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>alias</parameter></term>
<listitem>
<para>
Псевдоним для использования в обертках <literal>phar://</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>index</parameter></term>
<listitem>
<para>
Местоположение в phar-архиве индексного файла.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>f404</parameter></term>
<listitem>
<para>
Местоположение скрипта, отвечающего за обработку ошибки
HTTP 404. Скрипт должен возвращать корректные заголовки для этой ошибки.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>mimetypes</parameter></term>
<listitem>
<para>
Массив сопоставления расширений файлов типам MIME.
Если достаточно сопоставления по умолчанию, то передайте сюда пустой массив.
По умолчанию используются такие сопоставления:
<programlisting role="php">
<![CDATA[
<?php
$mimes = array(
'phps' => Phar::PHPS, // передается в highlight_file()
'c' => 'text/plain',
'cc' => 'text/plain',
'cpp' => 'text/plain',
'c++' => 'text/plain',
'dtd' => 'text/plain',
'h' => 'text/plain',
'log' => 'text/plain',
'rng' => 'text/plain',
'txt' => 'text/plain',
'xsd' => 'text/plain',
'php' => Phar::PHP, // разбирается как PHP
'inc' => Phar::PHP, // разбирается как PHP
'avi' => 'video/avi',
'bmp' => 'image/bmp',
'css' => 'text/css',
'gif' => 'image/gif',
'htm' => 'text/html',
'html' => 'text/html',
'htmls' => 'text/html',
'ico' => 'image/x-ico',
'jpe' => 'image/jpeg',
'jpg' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'js' => 'application/x-javascript',
'midi' => 'audio/midi',
'mid' => 'audio/midi',
'mod' => 'audio/mod',
'mov' => 'movie/quicktime',
'mp3' => 'audio/mp3',
'mpg' => 'video/mpeg',
'mpeg' => 'video/mpeg',
'pdf' => 'application/pdf',
'png' => 'image/png',
'swf' => 'application/shockwave-flash',
'tif' => 'image/tiff',
'tiff' => 'image/tiff',
'wav' => 'audio/wav',
'xbm' => 'image/xbm',
'xml' => 'text/xml',
);
?>
]]>
</programlisting>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>rewrites</parameter></term>
<listitem>
<para>
Функция перезаписи, которой передается единственный строковый параметр и
которая должна также вернуть строку, либо &false;.
</para>
<para>
Если вы используете fast-cgi или cgi, то параметром, передаваемым в эту функцию
будет значение переменной <varname>$_SERVER['PATH_INFO']</varname>.
В ином случае передаваться будет значение переменной
<varname>$_SERVER['REQUEST_URI']</varname>.
</para>
<para>
Если будет возвращена строка, то она будет использована как путь
к файлу внутри архива. Если вернется &false;, то webPhar() пошлет
код ошибки HTTP 403.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Выбросит исключение <classname>PharException</classname>, если будет невозможно
открыть какой либо файл, либо если вызывать ее не из загрузчика.
Если в параметре <parameter>mimetypes</parameter> указать некорректный MIME-тип,
или в <parameter>rewrites</parameter> будет передана некорректная функция
обратного вызова, то будет выброшено исключение
<classname>UnexpectedValueException</classname>.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>Phar::webPhar</function></title>
<para>
В примере ниже, созданный phar отобразит <literal>Hello World</literal>
при обращении из браузеа к <literal>/myphar.phar/index.php</literal> или к
<literal>/myphar.phar</literal>, и отобразит исходный код
<literal>index.phps</literal> при обращении к <literal>/myphar.phar/index.phps</literal>.
</para>
<programlisting role="php">
<![CDATA[
<?php
// создаем архив:
try {
$phar = new Phar('myphar.phar');
$phar['index.php'] = '<?php echo "Hello World"; ?>';
$phar['index.phps'] = '<?php echo "Hello World"; ?>';
$phar->setStub('<?php
Phar::webPhar();
__HALT_COMPILER(); ?>');
} catch (Exception $e) {
// Обрабатываем ошибки
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::mungServer</function></member>
<member><function>Phar::interceptFileFuncs</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->