<?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.paamayim-nekudotayim.php',
    1 => 'G&uuml;ltigkeitsbereichsoperator (::)',
    2 => 'G&uuml;ltigkeitsbereichsoperator (::)',
  ),
  'up' => 
  array (
    0 => 'language.oop5.php',
    1 => 'Klassen und Objekte',
  ),
  'prev' => 
  array (
    0 => 'language.oop5.inheritance.php',
    1 => 'Objekt-Vererbung',
  ),
  'next' => 
  array (
    0 => 'language.oop5.static.php',
    1 => 'Schl&uuml;sselwort static',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'language/oop5/paamayim-nekudotayim.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="language.oop5.paamayim-nekudotayim" class="sect1">
 <h2 class="title">Gültigkeitsbereichsoperator (::)</h2>

 <p class="para">
  Der Gültigkeitsbereichsoperator (auch Paamayim Nekudotayim genannt) oder
  einfacher ausgedrückt, der Doppel-Doppelpunkt, ist ein Kürzel, das den
  Zugriff auf eine <a href="language.oop5.constants.php" class="link">Konstante</a>,
  eine <a href="language.oop5.static.php" class="link">statische</a> Eigenschaft oder
  eine <a href="language.oop5.static.php" class="link">statische</a> Methode einer
  Klasse oder einer ihrer Eltern erlaubt. Außerdem können statische
  Eigenschaften oder Methoden durch
  <a href="language.oop5.late-static-bindings.php" class="link">späte statische Bindung</a>
  überschrieben werden.
 </p>

 <p class="para">
  Wenn Sie diese Elemente außerhalb der Klassendefinition ansprechen, benutzen
  Sie den Namen der Klasse.
 </p>

 <p class="para">
  Es ist möglich, eine Variable als Klassenreferenz zu nutzen. Der
  Variablenwert darf kein Schlüsselwort (wie <code class="literal">self</code>,
  <code class="literal">parent</code> oder <code class="literal">static</code>) sein.
 </p>

 <p class="para">
  Paamayim Nekudotayim scheint auf den ersten Blick eine eigenartige Wahl
  für die Benennung eines Doppel-Doppelpunktes zu sein. Jedoch entschied sich
  das Zend Team ihn so zu nennen, während sie die Zend Engine 0.5 schrieben
  (welche PHP 3 antreibt). Tatsächlich bedeutet das Doppel-Doppelpunkt -
  in Hebräisch.
 </p>

 <div class="example" id="example-1">
  <p><strong>Beispiel #1 :: außerhalb der Klassendefinition</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">MyClass </span><span style="color: #007700">{<br />    const </span><span style="color: #0000BB">CONST_VALUE </span><span style="color: #007700">= </span><span style="color: #DD0000">'Ein konstanter Wert'</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$classname </span><span style="color: #007700">= </span><span style="color: #DD0000">'MyClass'</span><span style="color: #007700">;<br />echo </span><span style="color: #0000BB">$classname</span><span style="color: #007700">::</span><span style="color: #0000BB">CONST_VALUE</span><span style="color: #007700">;<br /><br />echo </span><span style="color: #0000BB">MyClass</span><span style="color: #007700">::</span><span style="color: #0000BB">CONST_VALUE</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>

 </div>

 <p class="para">
  Die drei speziellen Schlüsselwörter <var class="varname">self</var>,
  <var class="varname">parent</var> und <var class="varname">static</var> werden benutzt, um
  auf Member und Methoden von innerhalb der Klassendefinition zuzugreifen.
 </p>

 <div class="example" id="example-2">
  <p><strong>Beispiel #2 :: innerhalb der Klassendefinition</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">MyClass </span><span style="color: #007700">{<br />    const </span><span style="color: #0000BB">CONST_VALUE </span><span style="color: #007700">= </span><span style="color: #DD0000">'Ein konstanter Wert'</span><span style="color: #007700">;<br />}<br /><br />class </span><span style="color: #0000BB">OtherClass </span><span style="color: #007700">extends </span><span style="color: #0000BB">MyClass<br /></span><span style="color: #007700">{<br />    public static </span><span style="color: #0000BB">$my_static </span><span style="color: #007700">= </span><span style="color: #DD0000">'statische Variable'</span><span style="color: #007700">;<br /><br />    public static function </span><span style="color: #0000BB">doubleColon</span><span style="color: #007700">() {<br />        echo </span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">CONST_VALUE </span><span style="color: #007700">. </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />        echo </span><span style="color: #0000BB">self</span><span style="color: #007700">::</span><span style="color: #0000BB">$my_static </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">$classname </span><span style="color: #007700">= </span><span style="color: #DD0000">'OtherClass'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$classname</span><span style="color: #007700">::</span><span style="color: #0000BB">doubleColon</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">OtherClass</span><span style="color: #007700">::</span><span style="color: #0000BB">doubleColon</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>

 </div>

 <p class="para">
  Wenn eine abgeleitete Klasse die Definition der Methode eines Vaters
  überschreibt, wird PHP die Methode des Vaters nicht aufrufen. Es obliegt
  der abgeleiteten Klasse, ob die Methode der Vaterklasse aufgerufen wird
  oder nicht. Dies gilt ebenfalls für
  <a href="language.oop5.decon.php" class="link">Konstruktoren und Destruktoren</a>,
  <a href="language.oop5.overloading.php" class="link">Überladung</a> und
  <a href="language.oop5.magic.php" class="link">magische</a> Methodendefinitionen.
 </p>

 <div class="example" id="example-3">
  <p><strong>Beispiel #3 Eine Vatermethode aufrufen</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">MyClass<br /></span><span style="color: #007700">{<br />    protected function </span><span style="color: #0000BB">myFunc</span><span style="color: #007700">() {<br />        echo </span><span style="color: #DD0000">"MyClass::myFunc()\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br />class </span><span style="color: #0000BB">OtherClass </span><span style="color: #007700">extends </span><span style="color: #0000BB">MyClass<br /></span><span style="color: #007700">{<br />    </span><span style="color: #FF8000">// Die Definition des Vaters überschreiben<br />    </span><span style="color: #007700">public function </span><span style="color: #0000BB">myFunc</span><span style="color: #007700">()<br />    {<br />        </span><span style="color: #FF8000">// Aber dennoch die Funktion des Vaters aufrufen<br />        </span><span style="color: #0000BB">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">myFunc</span><span style="color: #007700">();<br />        echo </span><span style="color: #DD0000">"OtherClass::myFunc()\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$class </span><span style="color: #007700">= new </span><span style="color: #0000BB">OtherClass</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$class</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">myFunc</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
  </div>

 </div>
 <p class="para">
  Siehe auch <a href="language.oop5.basic.php#language.oop5.basic.class.this" class="link">ein Beispiel</a>
  zur Bedeutung von <code class="literal">$this</code>, wenn nicht-statische Methoden
  statisch aufgerufen werden.
 </p>

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