PHP: Das Schlüsselwort 'static' in PHP Funktionen

Wer in der PHP Dokumentation nach 'static' sucht wird diesen Artikel finden: http://www.php.net/manual/de/language.oop5.static.php
Was manche jedoch nicht wissen, das Wort 'static' kann auch in normalen Funktionen verwendet werden kann und dort eine ganz andere Bedeutung.

Zur Vereinfachung ein kleiner Beispielcode:

<?php

/**
 * Simple function that counts every time it is called
 * @param string just return current value if this is 'get'
 * @return integer
 */

function counter($cmd=false) {
  static $count = 0;
  return ($cmd == 'get') ? $count : ++$count;
}

echo "Counter starts with: ".counter('get')."\n";
counter();
counter();
counter();
echo "We counted three times.\n";
echo "New counter value is: ".counter('get')."\n";

?>

Das "static $count = 0;" bewirkt dass in der Funktion eine statische Variable angelegt wird welche auch beim nächsten Aufruf der Funktion seinen Wert noch hat. Initialisiert wird diese Variable in unserem Fall mit 0.

Diese statischen Variablen kann man gut nutzen um zB Rückgabewerte zu cachen oder Variablen in Funktionen zu kapseln. Ich weiß das man dazu normalerweise Klassen benutzt, aber Funktionen haben den großen Vorteil dass sie global aufrufbar sind.

Komischerweise hab ich dieses Sprachkonstrukt nicht in der PHP Doku finden können. Schick mir bitte jemand den Link wenn man es findet.

No related posts.


 
 
 

2 Kommentare zu “PHP: Das Schlüsselwort 'static' in PHP Funktionen”

  1. Harry Klein 3. November 2010 um 00:27

    Etwas versteckt findet man hier
    http://www.php.net/manual/de/language.variables.scope.php , Abschnitt "Die Verwendung von statischen Variablen"
    dazu eine Beschreibung von static (Stichwort Gültigkeitsbereich von Variablen)

    Gruß, Harry

  2. Julius 3. November 2010 um 00:33

    Hallo Harry, danke für den Hinweis, da stehen wirklich nützliche Infos.