Wie eine Funktion aufgerufen wird, in sich selbst?

Ich habe eine Funktion, die generiert den Schlüssel von 4 Zeichen, die eindeutig sein muss für jede Zeit. Um dies zu tun, die zuerst die Funktion generiert den Schlüssel, und dann geprüft, ob eine Datenbank-Tabelle, um zu sehen, wenn es in Gebrauch ist von jemand anderem.

Wenn es nicht in Gebrauch ist, gibt es den Schlüssel, sonst ruft es sich wieder, aber dies bewirkt, dass die Funktion eine Endlosschleife, das ist ein no-no. Hier ist die ganze Funktion:

function key_generator($length = 4)
{
    //I've subsequently left out the generating code,
    //which is not necesarry in this case

    $key = 'xxxx';

    if ($this->user_model->valid_key($key) == true)
    {
        return $key;
    }
    else
    {
        $this->key_generator(4);
    }
}

Was ist der richtige Weg, um die Funktion erneut aufrufen?

Übrigens, ich bin mit CodeIgniter, daher $this.

  • Es heißt Rekursion
  • Auch $dieses ist nicht ausschließlich für CodeIgniter.
  • Ich glaube, er war einfach zu erklären, wo $es dazu kam und warum er nicht in dem definierten code-snippet.
  • $this verwendet wird, für Objekt/Klasse Anwendungsbereich. so lange Ihre Funktion innerhalb einer Klasse und das ist, wo Sie anrufen, dann müssen Sie $this->functionName().. oder self::Funktionsname() wenn es eine statische Funktion. etc etc
InformationsquelleAutor rebellion | 2009-10-23
Schreibe einen Kommentar