<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.classobj.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'classobj.examples.php',
    1 => 'Beispiele',
    2 => 'Beispiele',
  ),
  'up' => 
  array (
    0 => 'book.classobj.php',
    1 => 'Klassen/Objekte',
  ),
  'prev' => 
  array (
    0 => 'book.classobj.php',
    1 => 'Klassen/Objekte',
  ),
  'next' => 
  array (
    0 => 'ref.classobj.php',
    1 => 'Klassen- und Objekt-Funktionen',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/classobj/examples.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="classobj.examples" class="appendix">
 <h1 class="title">Beispiele</h1>

 <p class="para">
  In diesem Beispiel definieren wir zuerst eine Basisklasse und eine
  Erweiterung dieser Klasse. Die Basisklasse beschreibt ein beliebiges Gemüse,
  ob es essbar ist, sowie seine Farbe. Die Subklasse <var class="varname">Spinat</var>
  fügt eine Methode hinzu, um es zu kochen und eine weitere, um
  herauszufinden, ob es gekocht ist.
 </p>
 <p class="para">
  <div class="example" id="example-1">
   <p><strong>Beispiel #1 Klassendefinitionen</strong></p>
   <div class="example-contents"><p><var class="varname">Gemuese</var></p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Gemuese </span><span style="color: #007700">{<br />    public </span><span style="color: #0000BB">$essbar</span><span style="color: #007700">;<br /><br />    public </span><span style="color: #0000BB">$farbe</span><span style="color: #007700">;<br /><br />    public function </span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">$essbar</span><span style="color: #007700">, </span><span style="color: #0000BB">$farbe </span><span style="color: #007700">= </span><span style="color: #DD0000">"grün"</span><span style="color: #007700">)<br />    {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">essbar </span><span style="color: #007700">= </span><span style="color: #0000BB">$essbar</span><span style="color: #007700">;<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">farbe </span><span style="color: #007700">= </span><span style="color: #0000BB">$farbe</span><span style="color: #007700">;<br />    }<br /><br />    public function </span><span style="color: #0000BB">istEssbar</span><span style="color: #007700">()<br />    {<br />        return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">essbar</span><span style="color: #007700">;<br />    }<br /><br />    public function </span><span style="color: #0000BB">welcheFarbe</span><span style="color: #007700">()<br />    {<br />        return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">farbe</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p><var class="varname">Spinat</var></p></div>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">class </span><span style="color: #0000BB">Spinat </span><span style="color: #007700">extends </span><span style="color: #0000BB">Gemuese </span><span style="color: #007700">{<br /><br />    public </span><span style="color: #0000BB">$gekocht </span><span style="color: #007700">= </span><span style="color: #0000BB">false</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">parent</span><span style="color: #007700">::</span><span style="color: #0000BB">__construct</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #DD0000">"grün"</span><span style="color: #007700">);<br />    }<br /><br />    public function </span><span style="color: #0000BB">kocheEs</span><span style="color: #007700">()<br />    {<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">gekocht </span><span style="color: #007700">= </span><span style="color: #0000BB">true</span><span style="color: #007700">;<br />    }<br /><br />    public function </span><span style="color: #0000BB">istGekocht</span><span style="color: #007700">()<br />    {<br />        return </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">gekocht</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  Jetzt instantiieren wir zwei Objekte von diesen Klassen und geben
  Informationen über sie aus, einschließlich ihrer übergeordneten Klasse. Wir
  definieren auch einige Hilfsfunktionen, hauptsächlich um eine hübsche
  Ausgabe der Variablen zu erhalten.
 </p>
 <p class="para">
  <div class="example" id="example-2">
   <p><strong>Beispiel #2 test_script.php</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">// Registrieren des Autoloaders zum Laden von Klassen<br /></span><span style="color: #0000BB">spl_autoload_register</span><span style="color: #007700">();<br /><br />function </span><span style="color: #0000BB">zeigeEigenschaften</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">)<br />{<br />    foreach (</span><span style="color: #0000BB">get_object_vars</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">) as </span><span style="color: #0000BB">$prop </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$val</span><span style="color: #007700">) {<br />        echo </span><span style="color: #DD0000">"\t</span><span style="color: #0000BB">$prop</span><span style="color: #DD0000"> = </span><span style="color: #0000BB">$val</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br />function </span><span style="color: #0000BB">zeigeMethoden</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">)<br />{<br />    </span><span style="color: #0000BB">$arr </span><span style="color: #007700">= </span><span style="color: #0000BB">get_class_methods</span><span style="color: #007700">(</span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">));<br />    foreach (</span><span style="color: #0000BB">$arr </span><span style="color: #007700">as </span><span style="color: #0000BB">$method</span><span style="color: #007700">) {<br />        echo </span><span style="color: #DD0000">"\tFunktion </span><span style="color: #0000BB">$method</span><span style="color: #DD0000">()\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br />function </span><span style="color: #0000BB">objGehoertZu</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">, </span><span style="color: #0000BB">$class</span><span style="color: #007700">)<br />{<br />   if (</span><span style="color: #0000BB">is_subclass_of</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">, </span><span style="color: #0000BB">$class</span><span style="color: #007700">)) {<br />        echo </span><span style="color: #DD0000">"Objekt gehört zur Klasse " </span><span style="color: #007700">. </span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$obj</span><span style="color: #007700">);<br />        echo </span><span style="color: #DD0000">", einer Subklasse von </span><span style="color: #0000BB">$class</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />    } else {<br />        echo </span><span style="color: #DD0000">"Objekt gehört nicht zu einer Subklasse von </span><span style="color: #0000BB">$class</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #FF8000">// Instantiiere zwei Objekte<br /></span><span style="color: #0000BB">$veggie </span><span style="color: #007700">= new </span><span style="color: #0000BB">Gemuese</span><span style="color: #007700">(</span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #DD0000">"blau"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$leafy </span><span style="color: #007700">= new </span><span style="color: #0000BB">Spinat</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// Informationen über die Objekte ausgeben<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"veggie: KLASSE " </span><span style="color: #007700">. </span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$veggie</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"leafy: KLASSE " </span><span style="color: #007700">. </span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$leafy</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">", ELTERN " </span><span style="color: #007700">. </span><span style="color: #0000BB">get_parent_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$leafy</span><span style="color: #007700">) . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// Zeige Eigenschaften von veggie<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"\nveggie: Eigenschaften\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">zeigeEigenschaften</span><span style="color: #007700">(</span><span style="color: #0000BB">$veggie</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// und Methoden von leafy<br /></span><span style="color: #007700">echo </span><span style="color: #DD0000">"\nleafy: Methoden\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">zeigeMethoden</span><span style="color: #007700">(</span><span style="color: #0000BB">$leafy</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #DD0000">"\nAbstammung:\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">objGehoertZu</span><span style="color: #007700">(</span><span style="color: #0000BB">$leafy</span><span style="color: #007700">, </span><span style="color: #0000BB">Spinat</span><span style="color: #007700">::class);<br /></span><span style="color: #0000BB">objGehoertZu</span><span style="color: #007700">(</span><span style="color: #0000BB">$leafy</span><span style="color: #007700">, </span><span style="color: #0000BB">Gemuese</span><span style="color: #007700">::class);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

   <div class="example-contents"><p>Die obigen Bespiele erzeugen folgende Ausgabe:</p></div>
   <div class="example-contents screen">
<div class="cdata"><pre>
veggie: KLASSE Gemuese
leafy: KLASSE Spinat, ELTERN Gemuese

veggie: Eigenschaften
        essbar = 1
        farbe = blau

leafy: Methoden
        Funktion __construct()
        Funktion kocheEs()
        Funktion istGekocht()
        Funktion istEssbar()
        Funktion welcheFarbe()

Abstammung:
Objekt gehört nicht zu einer Subklasse von Spinat
Objekt gehört zur Klasse Spinat, einer Subklasse von Gemuese
</pre></div>
   </div>
   <div class="example-contents"><p>
    Ein wichtiger Punkt im obigen Beispiel ist, dass das Objekt
    <var class="varname">$leafy</var> eine Instanz der Klasse
    <span class="classname"><strong class="classname">Spinat</strong></span> ist, die eine Subklasse
    von <span class="classname"><strong class="classname">Gemuese</strong></span> ist.
   </p></div>
  </div>
 </p>
</div>
<?php manual_footer($setup); ?>