<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/language.functions.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'functions.variable-functions.php',
    1 => 'Variablenfunktionen',
    2 => 'Variablenfunktionen',
  ),
  'up' => 
  array (
    0 => 'language.functions.php',
    1 => 'Funktionen',
  ),
  'prev' => 
  array (
    0 => 'functions.returning-values.php',
    1 => 'R&uuml;ckgabewerte',
  ),
  'next' => 
  array (
    0 => 'functions.internal.php',
    1 => 'Interne (eingebaute) Funktionen',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'language/functions.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="functions.variable-functions" class="sect1">
   <h2 class="title">Variablenfunktionen</h2>
   <p class="para">
    PHP unterstützt das Konzept der Variablenfunktionen. Wenn Sie an das Ende
    einer Variablen Klammern hängen, versucht PHP eine Funktion aufzurufen,
    deren Name der aktuelle Wert der Variablen ist. Dies kann unter anderem
    für Callbacks, Funktionstabellen usw. genutzt werden.
   </p>
   <p class="para">
    Variablenfunktionen funktionieren nicht mit Sprachkonstrukten wie
    <span class="function"><a href="function.echo.php" class="function">echo</a></span>, <span class="function"><a href="function.print.php" class="function">print</a></span>,
    <span class="function"><a href="function.unset.php" class="function">unset()</a></span>, <span class="function"><a href="function.isset.php" class="function">isset()</a></span>,
    <span class="function"><a href="function.empty.php" class="function">empty()</a></span>, <span class="function"><a href="function.include.php" class="function">include</a></span> und
    <span class="function"><a href="function.require.php" class="function">require</a></span>. Um diese Konstrukte als Variablenfunktionen
    benutzen zu können, müssen Sie Ihre eigenen Wrapperfunktionen verwenden.
   </p>
   <p class="para">
    <div class="example" id="example-1">
     <p><strong>Beispiel #1 Beispiel für Variablenfunktionen</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">function </span><span style="color: #0000BB">foo</span><span style="color: #007700">() {<br />    echo </span><span style="color: #DD0000">"In foo()&lt;br /&gt;\n"</span><span style="color: #007700">;<br />}<br /><br />function </span><span style="color: #0000BB">bar</span><span style="color: #007700">(</span><span style="color: #0000BB">$arg </span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">)<br />{<br />    echo </span><span style="color: #DD0000">"In bar(); das Argument ist '</span><span style="color: #0000BB">$arg</span><span style="color: #DD0000">'.&lt;br /&gt;\n"</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">// Dies ist eine Wrapperfunktion für echo<br /></span><span style="color: #007700">function </span><span style="color: #0000BB">echoit</span><span style="color: #007700">(</span><span style="color: #0000BB">$string</span><span style="color: #007700">)<br />{<br />    echo </span><span style="color: #0000BB">$string</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">$func </span><span style="color: #007700">= </span><span style="color: #DD0000">'foo'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$func</span><span style="color: #007700">();        </span><span style="color: #FF8000">// Dies ruft foo() auf<br /><br /></span><span style="color: #0000BB">$func </span><span style="color: #007700">= </span><span style="color: #DD0000">'bar'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$func</span><span style="color: #007700">(</span><span style="color: #DD0000">'test'</span><span style="color: #007700">);  </span><span style="color: #FF8000">// Dies ruft bar() auf<br /><br /></span><span style="color: #0000BB">$func </span><span style="color: #007700">= </span><span style="color: #DD0000">'echoit'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$func</span><span style="color: #007700">(</span><span style="color: #DD0000">'test'</span><span style="color: #007700">);  </span><span style="color: #FF8000">// Dies ruft echoit() auf<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    Sie können auch die Methode eines Objektes mittels der Variablenfunktionen
    aufrufen.
    <div class="example" id="example-2">
     <p><strong>Beispiel #2 Beispiel für eine Variablenmethode</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">Foo<br /></span><span style="color: #007700">{<br />    function </span><span style="color: #0000BB">Variable</span><span style="color: #007700">()<br />    {<br />        </span><span style="color: #0000BB">$name </span><span style="color: #007700">= </span><span style="color: #DD0000">'Bar'</span><span style="color: #007700">;<br />        </span><span style="color: #0000BB">$this</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">$name</span><span style="color: #007700">(); </span><span style="color: #FF8000">// Dies ruft die Methode Bar() auf<br />    </span><span style="color: #007700">}<br /><br />    function </span><span style="color: #0000BB">Bar</span><span style="color: #007700">()<br />    {<br />        echo </span><span style="color: #DD0000">"Das ist Bar"</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$foo </span><span style="color: #007700">= new </span><span style="color: #0000BB">Foo</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$funcname </span><span style="color: #007700">= </span><span style="color: #DD0000">"Variable"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$foo</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">$funcname</span><span style="color: #007700">();  </span><span style="color: #FF8000">// Dies ruft $foo-&gt;Variable() auf<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    Werden statische Methoden aufgerufen, ist der Funktionsaufruf stärker als
    der statische Eigenschaftsoperator:
    <div class="example" id="example-3">
     <p><strong>Beispiel #3 Beispiel für Variablenmethoden mit statischen Eigenschaften</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">Foo<br /></span><span style="color: #007700">{<br />    static </span><span style="color: #0000BB">$variable </span><span style="color: #007700">= </span><span style="color: #DD0000">'statische Eigenschaft'</span><span style="color: #007700">;<br />    static function </span><span style="color: #0000BB">Variable</span><span style="color: #007700">()<br />    {<br />        echo </span><span style="color: #DD0000">'Method Variable called'</span><span style="color: #007700">;<br />    }<br />}<br /><br />echo </span><span style="color: #0000BB">Foo</span><span style="color: #007700">::</span><span style="color: #0000BB">$variable</span><span style="color: #007700">; </span><span style="color: #FF8000">// Dies gibt 'statische Eigenschaft' aus. Es bräuchte<br />                     // eine $variable im aktuellen Geltungsbereich.<br /></span><span style="color: #0000BB">$variable </span><span style="color: #007700">= </span><span style="color: #DD0000">"Variable"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">Foo</span><span style="color: #007700">::</span><span style="color: #0000BB">$variable</span><span style="color: #007700">();  </span><span style="color: #FF8000">// Dies ruft $foo-&gt;Variable() auf, da $variable im<br />                   // aktuellen Geltungsbereich vorliegt.<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <p class="para">
    <div class="example" id="example-4">
     <p><strong>Beispiel #4 Komplexe Callables</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">Foo<br /></span><span style="color: #007700">{<br />    static function </span><span style="color: #0000BB">bar</span><span style="color: #007700">()<br />    {<br />        echo </span><span style="color: #DD0000">"bar\n"</span><span style="color: #007700">;<br />    }<br />    function </span><span style="color: #0000BB">baz</span><span style="color: #007700">()<br />    {<br />        echo </span><span style="color: #DD0000">"baz\n"</span><span style="color: #007700">;<br />    }<br />}<br /><br /></span><span style="color: #0000BB">$func </span><span style="color: #007700">= array(</span><span style="color: #DD0000">"Foo"</span><span style="color: #007700">, </span><span style="color: #DD0000">"bar"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$func</span><span style="color: #007700">(); </span><span style="color: #FF8000">// gibt "bar" aus<br /></span><span style="color: #0000BB">$func </span><span style="color: #007700">= array(new </span><span style="color: #0000BB">Foo</span><span style="color: #007700">, </span><span style="color: #DD0000">"baz"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$func</span><span style="color: #007700">(); </span><span style="color: #FF8000">// gibt "baz" aus<br /></span><span style="color: #0000BB">$func </span><span style="color: #007700">= </span><span style="color: #DD0000">"Foo::bar"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$func</span><span style="color: #007700">(); </span><span style="color: #FF8000">// gibt "bar" aus<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>

   <div class="sect2">
    <h3 class="title">Siehe auch</h3>
    <p class="para">
     <ul class="simplelist">
      <li><span class="function"><a href="function.is-callable.php" class="function">is_callable()</a></span></li>
      <li><span class="function"><a href="function.call-user-func.php" class="function">call_user_func()</a></span></li>
      <li><span class="function"><a href="function.function-exists.php" class="function">function_exists()</a></span></li>
      <li><a href="language.variables.variable.php" class="link">Variable Variablen</a></li>
     </ul>
    </p>
   </div>
  </div><?php manual_footer($setup); ?>