Übergabe von Parametern an eine statische Methode mit PHP
Baue ich meine eigenen Rahmen, und ich bin versucht, übergeben Sie einen parameter an eine statische Methode. Aus irgendeinem Grund, wird der parameter nicht immer übergeben. Hier ist der code:
Front.php:
if(URI::get(0) === "")
URI.php:
public static function get($index)
{
die($index);
if(!filter_var($index, FILTER_VALIDATE_INT)) {
throw new Exception('You must supply an integer index for the URI segment');
}
return self::$uri[$index];
}
Auf den ersten ich war immer eine Ausnahme, so dass ich fügte hinzu, in die die-Anweisung, um sicherzustellen, dass der $ - index war eigentlich immer richtig übergeben. Scheinbar ist es nicht, weil, wenn das Skript beendet wird, wird nichts gedruckt für den index.
Ich bin mit php 5.3.1.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ziemlich seltsam, wie es funktionieren sollte ; nach Prüfung dieser Teil des Codes :
Bekomme ich diese Ausgabe :
Gibt die statische Methode hat in der Tat erhalten die parameter (und ich sehe keinen Grund, warum sollte es nicht, eigentlich).
Nebenbei, Sie endet mit diesem Teil des Codes :
Zitat aus dem Handbuch Seite für
exit
(das ist das gleiche wie sterben) (Hervorhebung von mir) :Du mit PHP 5.3, das ist eine neuere version als 4.2 ; und, in Ihrem Fall,
$status
ist eine ganze Zahl - was bedeutet, es ist völlig normal, zu nichts angezeigt, mit dem code gepostet.Und zum Schluss : wenn Sie entfernen die
die
Ihr code endet, dies zu tun :Mit
$index = 0
filter_var
gibt die gefilterte Wert ; mitFILTER_VALIDATE_INT
, nehme ich an, Sie zu filtern, um eine Ganzzahl -- und 0 ist ein integer.Was bedeutet, dass Ihr Aufruf
filter_var
zurück0
.0
alsfalse
(siehe Konvertierung zu boolean) -- so, werden Sie in dieif
block ; und die exception wird geworfen.Angesichts
filter_var
gibt :false
wenn der filter versagt,0
ist eine gültige Daten, die zurückgegeben werden können,Sollten Sie wahrscheinlich verwenden Sie die
===
Betreiber (siehe Vergleichsoperatoren), zu vergleichen den Rückgabewert zufalse
. Das heißt, ein code würde wie folgt Aussehen :