<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.rararchive.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'rararchive.open.php',
    1 => 'RarArchive::open',
    2 => 'Abre arquivo RAR',
  ),
  'up' => 
  array (
    0 => 'class.rararchive.php',
    1 => 'RarArchive',
  ),
  'prev' => 
  array (
    0 => 'rararchive.issolid.php',
    1 => 'RarArchive::isSolid',
  ),
  'next' => 
  array (
    0 => 'rararchive.setallowbroken.php',
    1 => 'RarArchive::setAllowBroken',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'reference/rar/rararchive/open.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="rararchive.open" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">RarArchive::open</h1>
  <h1 class="refname">rar_open</h1>
  <p class="verinfo">(PECL rar &gt;= 2.0.0)</p><p class="refpurpose"><span class="refname">RarArchive::open</span> -- <span class="refname">rar_open</span> &mdash; <span class="dc-title">Abre arquivo RAR</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-rararchive.open-description">
  <h3 class="title">Descrição</h3>
  <p class="simpara">Estilo orientado a objetos (method):</p>
   <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="modifier">static</span> <span class="methodname"><strong>RarArchive::open</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$filename</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$password</code><span class="initializer"> = NULL</span></span>, <span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$volume_callback</code><span class="initializer"> = NULL</span></span>): <span class="type"><span class="type"><a href="class.rararchive.php" class="type RarArchive">RarArchive</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="simpara">Estilo procedural:</p>
  <div class="methodsynopsis dc-description"><span class="methodname"><strong>rar_open</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$filename</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$password</code><span class="initializer"> = NULL</span></span>, <span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$volume_callback</code><span class="initializer"> = NULL</span></span>): <span class="type"><span class="type"><a href="class.rararchive.php" class="type RarArchive">RarArchive</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="simpara">
   Abre o arquivo RAR especificado e retorna a instância <span class="type"><a href="class.rararchive.php" class="type RarArchive">RarArchive</a></span> que o representa.
  </p>
  <blockquote class="note"><p><strong class="note">Nota</strong>: 
   <span class="simpara">
    Se estiver abrindo um arquivo multivolume, o caminho do primeiro volume deverá ser passado como o primeiro parâmetro.
    Caso contrário, nem todos os arquivos serão mostrados. Isso ocorre intencionalmente.
   </span>
  </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-rararchive.open-parameters">
  <h3 class="title">Parâmetros</h3>
  <dl>
   
    <dt><code class="parameter">filename</code></dt>
    <dd>
     <span class="simpara">
      Caminho para o arquivo Rar.
     </span>
    </dd>
   
   
    <dt><code class="parameter">password</code></dt>
    <dd>
     <span class="simpara">
      Uma senha simples, se necessária para descriptografar os cabeçalhos. Ele também será usado por padrão
      se forem encontrados arquivos criptografados. Observe que os arquivos podem ter
      senhas diferentes em relação aos cabeçalhos e entre eles.
     </span>
    </dd>
   
   
    <dt><code class="parameter">volume_callback</code></dt>
    <dd>
     <span class="simpara">
      Uma função que recebe um parâmetro – o caminho do volume
      que não foi encontrado – e retorna uma string com o caminho correto
      para tal volume ou <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> se tal volume
      não existir ou não for conhecido. O programador deve garantir que
      a função passada não cause loops, pois esta função é chamada
      repetidamente se o caminho retornado em uma chamada anterior não
      corresponder ao volume necessário. A especificação deste parâmetro omite
      o aviso que seria emitido sempre que um volume não
      fosse encontrado; uma implementação que retorna apenas <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>
      pode, portanto, ser usado para simplesmente omitir tais avisos.
     </span>
    </dd>
   
  </dl>
  <div class="warning"><strong class="warning">Aviso</strong>
   <p class="simpara">
    Antes da versão 2.0.0, esta função não manipulava caminhos relativos
    corretamente. Use <span class="function"><a href="function.realpath.php" class="function">realpath()</a></span> como solução alternativa.
   </p>
  </div>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-rararchive.open-returnvalues">
  <h3 class="title">Valor Retornado</h3>
  <p class="simpara">
   Retorna a instância <span class="type"><a href="class.rararchive.php" class="type RarArchive">RarArchive</a></span> solicitada  ou <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> em caso de falha.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-rararchive.open-changelog">
  <h3 class="title">Registro de Alterações</h3>
  <table class="doctable informaltable">
   
    <thead>
     <tr>
      <th>Versão</th>
      <th>Descrição</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>PECL rar 3.0.0</td>
      <td>
       <code class="parameter">volume_callback</code> foi adicionado.
      </td>
     </tr>

    </tbody>
   
  </table>

 </div>


 <div class="refsect1 examples" id="refsect1-rararchive.open-examples">
  <h3 class="title">Exemplos</h3>
  <div class="example" id="example-1">
   <p><strong>Exemplo #1 Estilo orientado a objetos</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$rar_arch </span><span style="color: #007700">= </span><span style="color: #0000BB">RarArchive</span><span style="color: #007700">::</span><span style="color: #0000BB">open</span><span style="color: #007700">(</span><span style="color: #DD0000">'encrypted_headers.rar'</span><span style="color: #007700">, </span><span style="color: #DD0000">'samplepassword'</span><span style="color: #007700">);<br />if (</span><span style="color: #0000BB">$rar_arch </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Falha ao abrir o arquivo"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$entries </span><span style="color: #007700">= </span><span style="color: #0000BB">$rar_arch</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getEntries</span><span style="color: #007700">();<br />if (</span><span style="color: #0000BB">$entries </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Falha ao buscar as entradas"</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #DD0000">"Encontrados " </span><span style="color: #007700">. </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">) . </span><span style="color: #DD0000">" arquivos.\n"</span><span style="color: #007700">;<br /><br />if (empty(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">))<br />    die(</span><span style="color: #DD0000">"Nenhuma entrada válida encontrada."</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$stream </span><span style="color: #007700">= </span><span style="color: #0000BB">reset</span><span style="color: #007700">(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">getStream</span><span style="color: #007700">();<br />if (</span><span style="color: #0000BB">$stream </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Falha ao abrir o primeiro arquivo"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$rar_arch</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">close</span><span style="color: #007700">();<br /><br />echo </span><span style="color: #DD0000">"Conteúdo do primeiro arquivo é o seguinte:\n"</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">stream_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$stream</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$stream</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>O exemplo acima produzirá
algo semelhante a:</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Encontrados 2 arquivos.
Conteúdo do primeiro arquivo é o seguinte:
Conteúdo do primeiro arquivo criptografado.</pre>
</div>
   </div>
  </div>
  <div class="example" id="example-2">
   <p><strong>Exemplo #2 Estilo procedural</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$rar_arch </span><span style="color: #007700">= </span><span style="color: #0000BB">rar_open</span><span style="color: #007700">(</span><span style="color: #DD0000">'encrypted_headers.rar'</span><span style="color: #007700">, </span><span style="color: #DD0000">'samplepassword'</span><span style="color: #007700">);<br />if (</span><span style="color: #0000BB">$rar_arch </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Falha ao abrir o arquivo"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$entries </span><span style="color: #007700">= </span><span style="color: #0000BB">rar_list</span><span style="color: #007700">(</span><span style="color: #0000BB">$rar_arch</span><span style="color: #007700">);<br />if (</span><span style="color: #0000BB">$entries </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Falha ao buscar as entradas"</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #DD0000">"Encontrados " </span><span style="color: #007700">. </span><span style="color: #0000BB">count</span><span style="color: #007700">(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">) . </span><span style="color: #DD0000">" files.\n"</span><span style="color: #007700">;<br /><br />if (empty(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">))<br />    die(</span><span style="color: #DD0000">"Nenhuma entrada válida encontrada."</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$stream </span><span style="color: #007700">= </span><span style="color: #0000BB">reset</span><span style="color: #007700">(</span><span style="color: #0000BB">$entries</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">getStream</span><span style="color: #007700">();<br />if (</span><span style="color: #0000BB">$stream </span><span style="color: #007700">=== </span><span style="color: #0000BB">FALSE</span><span style="color: #007700">)<br />    die(</span><span style="color: #DD0000">"Falha ao abrir o primeiro arquivo"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">rar_close</span><span style="color: #007700">(</span><span style="color: #0000BB">$rar_arch</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #DD0000">"Conteúdo do primeiro arquivo é o seguinte:\n"</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">stream_get_contents</span><span style="color: #007700">(</span><span style="color: #0000BB">$stream</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$stream</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

  </div>
  <div class="example" id="example-3">
   <p><strong>Exemplo #3 Retorno de chamada de volume</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">/* Neste exemplo, há um volume chamado multi_broken.part1.rar<br /> * cujo próximo volume é denominado multi.part2.rar */<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">resolve</span><span style="color: #007700">(</span><span style="color: #0000BB">$vol</span><span style="color: #007700">) {<br />    if (</span><span style="color: #0000BB">preg_match</span><span style="color: #007700">(</span><span style="color: #DD0000">'/_broken/'</span><span style="color: #007700">, </span><span style="color: #0000BB">$vol</span><span style="color: #007700">))<br />        return </span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'_broken'</span><span style="color: #007700">, </span><span style="color: #DD0000">''</span><span style="color: #007700">, </span><span style="color: #0000BB">$vol</span><span style="color: #007700">);<br />    else<br />        return </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">$rar_file1 </span><span style="color: #007700">= </span><span style="color: #0000BB">rar_open</span><span style="color: #007700">(</span><span style="color: #0000BB">dirname</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">).</span><span style="color: #DD0000">'/multi_broken.part1.rar'</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #DD0000">'resolve'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$entry </span><span style="color: #007700">= </span><span style="color: #0000BB">$rar_file1</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getEntry</span><span style="color: #007700">(</span><span style="color: #DD0000">'file2.txt'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$entry</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">extract</span><span style="color: #007700">(</span><span style="color: #0000BB">null</span><span style="color: #007700">, </span><span style="color: #0000BB">dirname</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">) . </span><span style="color: #DD0000">"/temp_file2.txt"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-rararchive.open-seealso">
  <h3 class="title">Veja Também</h3>
  <ul class="simplelist">
   <li>Empacotador <a href="wrappers.rar.php" class="link"><code class="literal">rar://</code></a></li>
  </ul>
 </div>



</div><?php manual_footer($setup); ?>