<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/class.reflectionclass.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'reflectionclass.newlazyproxy.php',
    1 => 'ReflectionClass::newLazyProxy',
    2 => 'Crear una nueva instancia proxy perezosa',
  ),
  'up' => 
  array (
    0 => 'class.reflectionclass.php',
    1 => 'ReflectionClass',
  ),
  'prev' => 
  array (
    0 => 'reflectionclass.newlazyghost.php',
    1 => 'ReflectionClass::newLazyGhost',
  ),
  'next' => 
  array (
    0 => 'reflectionclass.resetaslazyghost.php',
    1 => 'ReflectionClass::resetAsLazyGhost',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/reflection/reflectionclass/newlazyproxy.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="reflectionclass.newlazyproxy" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">ReflectionClass::newLazyProxy</h1>
  <p class="verinfo">(PHP 8 &gt;= 8.4.0)</p><p class="refpurpose"><span class="refname">ReflectionClass::newLazyProxy</span> &mdash; <span class="dc-title">Crear una nueva instancia proxy perezosa</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-reflectionclass.newlazyproxy-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><strong>ReflectionClass::newLazyProxy</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$factory</code></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$options</code><span class="initializer"> = 0</span></span>): <span class="type"><a href="language.types.object.php" class="type object">object</a></span></div>

  <p class="simpara">
   Crear una nueva instancia proxy perezosa de la clase, adjuntando la
   <code class="parameter">factory</code> a la misma. El constructor no es
   llamado, y las propiedades no son definidas a su valor por defecto. Cuando se
   intenta observar o modificar el estado del proxy por primera vez, la función
   fábrica es llamada para proporcionar una instancia real, que es luego adjuntada
   al proxy. Después de esto, todas las interacciones posteriores con el proxy son
   transmitidas a la instancia real. Ver
   <a href="language.oop5.lazy-objects.php#language.oop5.lazy-objects.initialization-triggers" class="link">disparadores
   de inicialización</a> y <a href="language.oop5.lazy-objects.php#language.oop5.lazy-objects.initialization-sequence" class="link">
   secuencia de inicialización</a>.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-reflectionclass.newlazyproxy-parameters">
  <h3 class="title">Parámetros</h3>
  <dl>
   
    <dt><code class="parameter">factory</code></dt>
    <dd>
     <span class="simpara">
      La fábrica es una función de devolución de llamada con la siguiente firma:
     </span>
     <p class="para">
      <div class="methodsynopsis dc-description">
       <span class="methodname"><span class="replaceable">factory</span></span>(<span class="methodparam"><span class="type"><a href="language.types.object.php" class="type object">object</a></span> <code class="parameter">$object</code></span>): <span class="type"><a href="language.types.object.php" class="type object">object</a></span></div>

      <dl>
       
        <dt><code class="parameter">object</code></dt>
        <dd>
         <span class="simpara">
          El <code class="parameter">object</code> en curso de inicialización. En este punto,
          el objeto ya no está marcado como perezoso, y acceder a él no dispara
          la inicialización.
         </span>
        </dd>
       
      </dl>
     </p>
     <span class="simpara">
      La función fábrica debe devolver un objeto, llamado <em>instancia real</em>,
      que es luego adjuntado al proxy. Esta instancia real no debe ser perezosa
      ni debe ser el proxy mismo. Si la instancia real no tiene la misma clase
      que el proxy, la clase del proxy debe ser una subclase de la clase de la
      instancia real, sin propiedades adicionales, y no debe sobrescribir los
      métodos <span class="methodname"><strong>__destruct()</strong></span> o <span class="methodname"><strong>__clone()</strong></span>.
     </span>
    </dd>
   
   
    <dt><code class="parameter">options</code></dt><dd>
     <p class="para">
      <code class="parameter">options</code> puede ser una combinación de los siguientes flags:
      <dl>
       
        <dt>
         <strong><code><a href="class.reflectionclass.php#reflectionclass.constants.skip-initialization-on-serialize">ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE</a></code></strong>
        </dt>
        <dd>
         <span class="simpara">
          Por omisión, la serialización de un objeto perezoso desencadena su
          inicialización. Definir este flag evita la inicialización, permitiendo
          que los objetos perezosos sean serializados sin ser inicializados.
         </span>
        </dd>
       
      </dl>
     </p>
    </dd>
   
  </dl>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-reflectionclass.newlazyproxy-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="simpara">
   Devuelve una instancia proxy perezosa. Si el objeto no tiene propiedades, o si
   todas sus propiedades son estáticas o virtuales, se devuelve una instancia normal
   (no perezosa). Ver también
   <a href="language.oop5.lazy-objects.php#language.oop5.lazy-objects.lifecycle" class="link">Ciclo de vida de los objetos
   perezosos</a>.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-reflectionclass.newlazyproxy-errors">
  <h3 class="title">Errores/Excepciones</h3>
  <p class="simpara">
   Una <span class="classname"><a href="class.reflectionexception.php" class="classname">ReflectionException</a></span> si la clase es interna o
   extiende una clase interna, excepto <span class="classname"><a href="class.stdclass.php" class="classname">stdClass</a></span>.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-reflectionclass.newlazyproxy-examples">
  <h3 class="title">Ejemplos</h3>
  <div class="example" id="example-1">
   <p><strong>Ejemplo #1 Uso básico</strong></p>
   <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Example </span><span style="color: #007700">{<br />    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">(public </span><span style="color: #0000BB">int $prop</span><span style="color: #007700">) {<br />        echo </span><span style="color: #0000BB">__METHOD__</span><span style="color: #007700">, </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$reflector </span><span style="color: #007700">= new </span><span style="color: #0000BB">ReflectionClass</span><span style="color: #007700">(</span><span style="color: #0000BB">Example</span><span style="color: #007700">::class);<br /></span><span style="color: #0000BB">$object </span><span style="color: #007700">= </span><span style="color: #0000BB">$reflector</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">newLazyProxy</span><span style="color: #007700">(function (</span><span style="color: #0000BB">Example $object</span><span style="color: #007700">) {<br />     </span><span style="color: #0000BB">$realInstance </span><span style="color: #007700">= new </span><span style="color: #0000BB">Example</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br />     return </span><span style="color: #0000BB">$realInstance</span><span style="color: #007700">;<br />});<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$object </span><span style="color: #007700">instanceof </span><span style="color: #0000BB">Example</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Dispara la inicialización, y transmite la recuperación de la propiedad a la instancia real<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">prop</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$object</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive examplescode"><pre class="examplescode">lazy proxy object(Example)#3 (0) {
  [&quot;prop&quot;]=&gt;
  uninitialized(int)
}
bool(true)
Example::__construct
int(1)
lazy proxy object(Example)#3 (1) {
  [&quot;instance&quot;]=&gt;
  object(Example)#4 (1) {
    [&quot;prop&quot;]=&gt;
    int(1)
  }
}</pre>
</div>
   </div>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-reflectionclass.newlazyproxy-seealso">
  <h3 class="title">Ver también</h3>
  <ul class="simplelist">
   <li><a href="language.oop5.lazy-objects.php" class="link">Objetos perezosos</a></li>
   <li><span class="methodname"><a href="reflectionclass.newlazyghost.php" class="methodname" rel="rdfs-seeAlso">ReflectionClass::newLazyGhost()</a> - Crear una nueva instancia fantasma perezosa</span></li>
   <li><span class="methodname"><a href="reflectionclass.newinstancewithoutconstructor.php" class="methodname" rel="rdfs-seeAlso">ReflectionClass::newInstanceWithoutConstructor()</a> - Crea una nueva instancia de la clase sin invocar el constructor</span></li>
   <li><span class="methodname"><a href="reflectionclass.resetaslazyproxy.php" class="methodname" rel="rdfs-seeAlso">ReflectionClass::resetAsLazyProxy()</a> - Reinicia un objeto y lo marca como perezoso</span></li>
   <li><span class="methodname"><a href="reflectionclass.marklazyobjectasinitialized.php" class="methodname" rel="rdfs-seeAlso">ReflectionClass::markLazyObjectAsInitialized()</a> - Marca un objeto perezoso como inicializado sin llamar al inicializador o a la f&aacute;brica</span></li>
   <li><span class="methodname"><a href="reflectionclass.initializelazyobject.php" class="methodname" rel="rdfs-seeAlso">ReflectionClass::initializeLazyObject()</a> - Forzar la inicializaci&oacute;n de un objeto perezoso</span></li>
   <li><span class="methodname"><a href="reflectionclass.isuninitializedlazyobject.php" class="methodname" rel="rdfs-seeAlso">ReflectionClass::isUninitializedLazyObject()</a> - Verifica si un objeto es perezoso y no inicializado</span></li>
   <li><span class="methodname"><a href="reflectionproperty.setrawvaluewithoutlazyinitialization.php" class="methodname" rel="rdfs-seeAlso">ReflectionProperty::setRawValueWithoutLazyInitialization()</a> - Define el valor bruto de una propiedad sin activar la inicializaci&oacute;n perezosa</span></li>
   <li><span class="methodname"><a href="reflectionproperty.skiplazyinitialization.php" class="methodname" rel="rdfs-seeAlso">ReflectionProperty::skipLazyInitialization()</a> - Marca una propiedad como no perezosa</span></li>
   <li><span class="methodname"><a href="reflectionproperty.islazy.php" class="methodname" rel="rdfs-seeAlso">ReflectionProperty::isLazy()</a> - Verifica si una propiedad es perezosa</span></li>
  </ul>
 </div>


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