<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'language.oop5.references.php',
    1 => 'Objekte und Referenzen',
    2 => 'Objekte und Referenzen',
  ),
  'up' => 
  array (
    0 => 'language.oop5.php',
    1 => 'Klassen und Objekte',
  ),
  'prev' => 
  array (
    0 => 'language.oop5.late-static-bindings.php',
    1 => 'Sp&auml;te statische Bindung',
  ),
  'next' => 
  array (
    0 => 'language.oop5.serialization.php',
    1 => 'Serialisierung von Objekten',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'language/oop5/references.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.oop5.references" class="sect1">
  <h2 class="title">Objekte und Referenzen</h2>
  <p class="para">
   Eine der häufigsten Aussagen zu objektorientierter Programmierung in PHP ist,
   dass &quot;Objekte standardmäßig als Referenz übergeben werden&quot;. Dies ist nicht
   komplett wahr. Dieser Abschnitt berichtigt diese verbreitete Annahme anhand
   von Beispielen.
  </p>

  <p class="para">
   Eine PHP-Referenz ist ein Alias, der es ermöglicht, dass zwei unterschiedliche
   Variablen sich auf denselben Wert beziehen. In PHP enthält
   eine Objektvariable nicht mehr das Objekt als Wert, sondern nur einen
   Objektbezeichner, der bei Objektzugriffen die Identifizierung des eigentlichen
   Objektes ermöglicht. Wenn ein Objekt als Argument oder Rückgabewert übergeben
   oder einer anderen Variable zugewiesen wird, so sind die verschiedenen Variablen
   keine Aliase, sie enthalten vielmehr Kopien des Bezeichners, die auf dasselbe
   Objekt verweisen.
  </p>

  <div class="example" id="example-1">
   <p><strong>Beispiel #1 Referenzen und Objekte</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">A </span><span style="color: #007700">{<br />    public </span><span style="color: #0000BB">$foo </span><span style="color: #007700">= </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />}  <br /><br /></span><span style="color: #0000BB">$a </span><span style="color: #007700">= new </span><span style="color: #0000BB">A</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b </span><span style="color: #007700">= </span><span style="color: #0000BB">$a</span><span style="color: #007700">;     </span><span style="color: #FF8000">// $a und $b sind Kopien des gleichen Bezeichners<br />             // ($a) = ($b) = &lt;id&gt;<br /></span><span style="color: #0000BB">$b</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">foo </span><span style="color: #007700">= </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">$a</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">foo</span><span style="color: #007700">.</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /><br /></span><span style="color: #0000BB">$c </span><span style="color: #007700">= new </span><span style="color: #0000BB">A</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$d </span><span style="color: #007700">= &amp;</span><span style="color: #0000BB">$c</span><span style="color: #007700">;    </span><span style="color: #FF8000">// $c und $d sind Referenzen<br />             // ($c,$d) = &lt;id&gt;<br /><br /></span><span style="color: #0000BB">$d</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">foo </span><span style="color: #007700">= </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">$c</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">foo</span><span style="color: #007700">.</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /><br /></span><span style="color: #0000BB">$e </span><span style="color: #007700">= new </span><span style="color: #0000BB">A</span><span style="color: #007700">;<br /><br />function </span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">) {<br />    </span><span style="color: #FF8000">// ($obj) = ($e) = &lt;id&gt;<br />    </span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">foo </span><span style="color: #007700">= </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">foo</span><span style="color: #007700">(</span><span style="color: #0000BB">$e</span><span style="color: #007700">);<br />echo </span><span style="color: #0000BB">$e</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">foo</span><span style="color: #007700">.</span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p></div>
   <div class="example-contents screen">
<div class="annotation-interactive cdata"><pre>
2
2
2
</pre></div>
   </div>
  </div>
 </div><?php manual_footer($setup); ?>