<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.oop5.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'language.oop5.cloning.php',
    1 => 'Nesne Kopyalama',
    2 => 'Nesne Kopyalama',
  ),
  'up' => 
  array (
    0 => 'language.oop5.php',
    1 => 'Sınıflar ve Nesneler',
  ),
  'prev' => 
  array (
    0 => 'language.oop5.final.php',
    1 => 'final Anahtar S&ouml;zc&uuml;ğ&uuml;',
  ),
  'next' => 
  array (
    0 => 'language.oop5.object-comparison.php',
    1 => 'Nesnelerin Karşılaştırılması',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'language/oop5/cloning.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.oop5.cloning" class="sect1">
  <h2 class="title">Nesne Kopyalama</h2>

  <p class="para">
    Bir nesnenin tüm özelliklerinin aynen kopyalanarak çoğaltılması her zaman
    istenilen durum değildir. Kurucuların kopyalanması iyi bir örnektir,
    bir GTK penceresini temsil eden bir nesneniz varsa ve bu nesne GTK
    penceresine ait özkaynağı tutuyorsa, bu nesnenin kopyasını
    oluşturduğunuzda, yeni nesnenin önceki pencere ile aynı özelliklere sahip
    yeni bir pencereye sahip olmasını ve önceki nesne ile aynı şekilde
    pencereye ait özkaynağı tutuyor olmasını isteyebilirsiniz. Bir diğer
    örnek, nesneniz kullandığı başka bir nesneye ait bir gönderim tutuyorsa,
    ebeveyn nesne kopyalandığında diğer nesnenin de yeni bir örneğinin
    oluşturulmasını isteyebilirsiniz, yani ebeveynin kopyasının kendine ait
    ayrı bir kopyası olur.
  </p>

  <p class="para">
   Bir nesnenin kopyası (mümkünse nesnenin
   <a href="language.oop5.cloning.php#object.clone" class="link">__clone()</a> yöntemini
   çağıran) <code class="literal">clone</code> anahtar sözcüğü kullanılarak
   oluşturulur.
  </p>

  <div class="informalexample">
   <div class="example-contents">
<div class="cdata"><pre>
$nesnenin_kopyası = clone $object;
</pre></div>
   </div>

  </div>

  <p class="para">
    Bir nesne kopyalandığında, PHP nesnenin tüm özelliklerinin yüzeysel bir
    kopyasını çıkartacaktır. Diğer değişkenlere birer gönderim olan tüm
    özellikler gönderim olarak kalacaktır.
  </p>

  <div class="methodsynopsis dc-description" id="object.clone">
   <span class="methodname"><strong>__clone</strong></span>(): <span class="type"><a href="language.types.void.php" class="type void">void</a></span></div>


  <p class="para">
    Kopyalama tamamlanır tamamlanmaz, bir
    <a href="language.oop5.cloning.php#object.clone" class="link">__clone()</a> yöntemi
    tanımlanmışsa, değişmesi gereken lüzumlu tüm özelliklere izin vermek için
    yeni oluşturulan nesnenin <a href="language.oop5.cloning.php#object.clone" class="link">__clone()</a>
    yöntemi çağrılacaktır.
  </p>

  <div class="example" id="example-1">
   <p><strong>Örnek 1 - Bir nesnenin kopyalanması</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: #007700">class </span><span style="color: #0000BB">AltNesne<br /></span><span style="color: #007700">{<br />    static </span><span style="color: #0000BB">$örnek_sayısı </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />    public </span><span style="color: #0000BB">$örnek</span><span style="color: #007700">;<br /><br />    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">()<br />    {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">örnek </span><span style="color: #007700">= ++</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">$örnek_sayısı</span><span style="color: #007700">;<br />    }<br /><br />    public function </span><span style="color: #0000BB">__clone</span><span style="color: #007700">()<br />    {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">örnek </span><span style="color: #007700">= ++</span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">$örnek_sayısı</span><span style="color: #007700">;<br />    }<br />}<br /><br />class </span><span style="color: #0000BB">KopyalanabilirNesnem<br /></span><span style="color: #007700">{<br />    public </span><span style="color: #0000BB">$nesne1</span><span style="color: #007700">;<br />    public </span><span style="color: #0000BB">$nesne2</span><span style="color: #007700">;<br /><br />    function </span><span style="color: #0000BB">__clone</span><span style="color: #007700">()<br />    {<br />        </span><span style="color: #FF8000">// this-&gt;nesne1'in bir kopyasını oluşturmak için<br />        // zorlayalım, yoksa aynı nesneyi gösterecek.<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">nesne1 </span><span style="color: #007700">= clone </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">nesne1</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$nes </span><span style="color: #007700">= new </span><span style="color: #0000BB">KopyalanabilirNesnem</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">$nes</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">nesne1 </span><span style="color: #007700">= new </span><span style="color: #0000BB">AltNesne</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$nes</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">nesne2 </span><span style="color: #007700">= new </span><span style="color: #0000BB">AltNesne</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">$nes2 </span><span style="color: #007700">= clone </span><span style="color: #0000BB">$nes</span><span style="color: #007700">;<br /><br /><br />print </span><span style="color: #DD0000">"Özgün Nesne:\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$nes</span><span style="color: #007700">);<br /><br />print </span><span style="color: #DD0000">"Kopya Nesne:\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$nes2</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div></div>

   <div class="example-contents"><p>
Yukarıdaki örneğin çıktısı:</p></div>
   <div class="example-contents screen">
<div class="cdata"><pre>
Özgün Nesne:
KopyalanabilirNesnem Object
(
    [nesne1] =&gt; AltNesne Object
        (
            [örnek] =&gt; 1
        )

    [nesne2] =&gt; AltNesne Object
        (
            [örnek] =&gt; 2
        )

)
Kopya Nesne:
KopyalanabilirNesnem Object
(
    [nesne1] =&gt; AltNesne Object
        (
            [örnek] =&gt; 3
        )

    [nesne2] =&gt; AltNesne Object
        (
            [örnek] =&gt; 2
        )

)
</pre></div></div>

  </div>
  <p class="para">
   Yeni kopyalanmış bir nesnenin üyesine tek bir ifadede erişmek mümkündür:
  </p>
  <div class="example" id="example-2">
   <p><strong>Örnek 2 - Yeni kopyalanmış nesnenin üyesine erişim</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$dateTime </span><span style="color: #007700">= new </span><span style="color: #0000BB">DateTime</span><span style="color: #007700">();<br />echo (clone </span><span style="color: #0000BB">$dateTime</span><span style="color: #007700">)-&gt;</span><span style="color: #0000BB">format</span><span style="color: #007700">(</span><span style="color: #DD0000">'Y'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>
Yukarıdaki örnek şuna benzer bir çıktı üretir:</p></div>
   <div class="example-contents screen">
<div class="cdata"><pre>
2016
</pre></div>
   </div>
  </div>

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