<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="phardata.extractto" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
 <refnamediv>
  <refname>PharData::extractTo</refname>
  <refpurpose>Extract the contents of a tar/zip archive to a directory</refpurpose>
 </refnamediv>

 <refsect1 role="description">
  &reftitle.description;
  <methodsynopsis role="PharData">
   <modifier>public</modifier> <type>bool</type><methodname>PharData::extractTo</methodname>
   <methodparam><type>string</type><parameter>directory</parameter></methodparam>
   <methodparam choice="opt"><type class="union"><type>array</type><type>string</type><type>null</type></type><parameter>files</parameter><initializer>&null;</initializer></methodparam>
   <methodparam choice="opt"><type>bool</type><parameter>overwrite</parameter><initializer>&false;</initializer></methodparam>
  </methodsynopsis>

  <para>
   Extract all files within a tar/zip archive to disk.  Extracted files and directories preserve
   permissions as stored in the archive.  The optional parameters allow optional control over
   which files are extracted, and whether existing files on disk can be overwritten.
   The second parameter <literal>files</literal> can be either the name of a file or
   directory to extract, or an array of names of files and directories to extract.  By
   default, this method will not overwrite existing files, the third parameter can be
   set to true to enable overwriting of files.
   This method is similar to <function>ZipArchive::extractTo</function>.
  </para>
 </refsect1>

 <refsect1 role="parameters">
  &reftitle.parameters;
  <para>
   <variablelist>
    <varlistentry>
     <term><parameter>directory</parameter></term>
     <listitem>
      <para>
       Path to extract the given <literal>files</literal> to
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>files</parameter></term>
     <listitem>
      <para>
       The name of a file or directory to extract, or an array of files/directories to extract
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><parameter>overwrite</parameter></term>
     <listitem>
      <para>
       Set to &true; to enable overwriting existing files
      </para>
     </listitem>
    </varlistentry>
   </variablelist>
  </para>

 </refsect1>
 <refsect1 role="returnvalues">
  &reftitle.returnvalues;
  <para>
   returns &true; on success, but it is better to check for thrown exception,
   and assume success if none is thrown.
  </para>
 </refsect1>

 <refsect1 role="errors">
  &reftitle.errors;
  <para>
   Throws <classname>PharException</classname> if errors occur while flushing
   changes to disk.
  </para>
 </refsect1>


 <refsect1 role="examples">
  &reftitle.examples;
  <para>
   <example>
    <title>A <function>PharData::extractTo</function> example</title>
    <programlisting role="php">
<![CDATA[
<?php
try {
    $phar = new PharData('myphar.tar');
    $phar->extractTo('/full/path'); // extract all files
    $phar->extractTo('/another/path', 'file.txt'); // extract only file.txt
    $phar->extractTo('/this/path',
        array('file1.txt', 'file2.txt')); // extract 2 files only
    $phar->extractTo('/third/path', null, true); // extract all files, and overwrite
} catch (Exception $e) {
    // handle errors
}
?>
]]>
    </programlisting>
   </example>
  </para>
 </refsect1>

 <refsect1 role="notes">
  &reftitle.notes;
  &note.extractto-windows;
 </refsect1>

 <refsect1 role="seealso">
  &reftitle.seealso;
  <para>
   <simplelist>
    <member><function>Phar::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
-->
