Files
doc-fr/reference/phar/Phar/buildFromIterator.xml
George Peter Banyard e058f520d3 Fix build
2022-01-09 22:33:31 +00:00

239 lines
7.3 KiB
XML

<?xml version='1.0' encoding='utf-8'?>
<!-- EN-Revision: ed66a8608b9b7e9e6b880226e7265a0ef69f816d Maintainer: gui Status: ready -->
<!-- Reviewed: yes -->
<refentry xml:id="phar.buildfromiterator" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Phar::buildFromIterator</refname>
<refpurpose>Construit une archive phar à partir d'un itérateur</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>array</type><methodname>Phar::buildFromIterator</methodname>
<methodparam><type>Traversable</type><parameter>iterator</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>baseDirectory</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
&phar.write;
<para>
Remplit une archive phar à partir d'un itérateur. Deux styles d'itérateur
sont supportés : les itérateurs qui font correspondre le nom de fichier
au sein du phar avec le nom d'un fichier sur le disque, et les itérateurs
comme <classname>DirectoryIterator</classname> qui retournent des objets
<classname>SplFileInfo</classname>. Pour les itérateurs qui retournent
des objets <classname>SplFileInfo</classname>, le second paramètre est
obligatoire.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>iterator</parameter></term>
<listitem>
<para>
Un itérateur qui associe un fichier avec une position, ou bien
retourne des objets <classname>SplFileInfo</classname>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>baseDirectory</parameter></term>
<listitem>
<para>
Pour les itérateurs qui retournent des objets
<classname>SplFileInfo</classname>, la portion de chemin absolu
de chaque fichier qu'il faut supprimer lors de l'ajout à
l'archive phar.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
<function>Phar::buildFromIterator</function> retourne un tableau
associatif qui associe la représentation interne du fichier à un
chemin absolu dans le système.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
Cette méthode émet une exception <classname>UnexpectedValueException</classname>
quand l'itérateur retourne des valeurs fausses, telles qu'une clé
entière à la place d'une chaîne; une exception
<classname>BadMethodCallException</classname> quand un itérateur
basé sur <classname>SplFileInfo</classname> est passé sans paramètre
<parameter>baseDirectory</parameter>, ou une exception
<classname>PharException</classname> s'il y a eu des erreurs lors de la
sauvegarde de l'archive phar.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.1.0</entry>
<entry>
<methodname>Phar::buildFromIterator</methodname> ne retourne plus &false; désormais.
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
<parameter>baseDirectory</parameter> est désormais nullable.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Exemple avec <function>Phar::buildFromIterator</function> et <classname>SplFileInfo</classname></title>
<para>
Pour la plupart des archives phar, l'archive reflète l'arborescence
d'un répertoire, et le second style est le plus utile. Par exemple,
pour créer une archive phar contenant les fichiers de l'arborescence
du répertoire :
</para>
<para>
<screen>
<![CDATA[
/chemin/vers/projet/
config/
dist.xml
debug.xml
lib/
file1.php
file2.php
src/
processthing.php
www/
index.php
cli/
index.php
]]>
</screen>
</para>
<para>
Ce code peut être utilisé pour ajouter à l'archive &quot;projet.phar&quot; :
</para>
<para>
<programlisting role="php">
<![CDATA[
<?php
// crée avec l'alias "projet.phar"
$phar = new Phar('projet.phar', 0, 'projet.phar');
$phar->buildFromIterator(
new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/chemin/vers/projet')),
'/chemin/vers/projet');
$phar->setStub($phar->createDefaultStub('cli/index.php', 'www/index.php'));
?>
]]>
</programlisting>
</para>
<para>
Le fichier projet.phar peut alors être utilisé immédiatement.
<function>Phar::buildFromIterator</function> ne règle pas les
paramètres tels que la compression ou les métadonnées; ceci
peut cependant être fait après avoir créé l'archive phar.
</para>
<para>
Il est intéressant de noter que <function>Phar::buildFromIterator</function>
peut aussi être utilisé pour copier les éléments d'une archive phar
existante, car l'objet Phar hérite de <classname>DirectoryIterator</classname> :
</para>
<para>
<programlisting role="php">
<![CDATA[
<?php
// crée avec l'alias "projet.phar"
$phar = new Phar('projet.phar', 0, 'projet.phar');
$phar->buildFromIterator(
new RecursiveIteratorIterator(
new Phar('/chemin/vers/unautrephar.phar')),
'phar:///chemin/vers/unautrephar.phar/chemin/vers/projet');
$phar->setStub($phar->createDefaultWebStub('cli/index.php', 'www/index.php'));
?>
]]>
</programlisting>
</para>
</example>
<example>
<title>Exemple avec <function>Phar::buildFromIterator</function> et d'autres itérateurs</title>
<para>
La seconde forme d'itérateur peut être utilisée avec n'importe
quel itérateur qui retourne une correspondance clé =&gt; valeur,
tels que <classname>ArrayIterator</classname> :
</para>
<para>
<programlisting role="php">
<![CDATA[
<?php
// crée avec l'alias "projet.phar"
$phar = new Phar('projet.phar', 0, 'projet.phar');
$phar->buildFromIterator(
new ArrayIterator(
array(
'interne/fichier.php' => dirname(__FILE__) . '/unfichier.php',
'unautre/fichier.jpg' => fopen('/chemin/vers/grosfichier.jpg', 'rb'),
)));
$phar->setStub($phar->createDefaultWebStub('cli/index.php', 'www/index.php'));
?>
]]>
</programlisting>
</para>
</example>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>Phar::buildFromDirectory</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
-->