Rückgabewerte von Funktionen
Fabian St.
- php
0 XaraX0 XaraX0 Fabian St.
Hi!
Eine Funktion sollte ja bekanntlich eigentlich immer etwas zurückliefern - sei es auch nur um das Debuggen zu erleichtern.
Nun bin ich bei einer Funktion zur Überprüfung von User-Eingaben auf die Frage gestoßen, wie man am geschicktesten eventuelle Fehler aber auch die Rückmeldung über die Richtigkeit der Eingaben zurückzuliefern kann.
Beispiel:
---------------------------------------------------------------------------
<?php
function check($ressource) # unsinnige Funktion zum Testen eines Stringes
{ # auf eine vorgeschriebene Länge von 10 Zeichen
$string = '';
$flag = TRUE;
if(strlen($ressource) < 10)
{
$string .= "<h1>Eingabe zu kurz</h1>\n";
$flag = FALSE;
}
if($flag) return 1; # Rückgabe: 1 (int) ==> alles OK!
else return $string; # Rückgabe: $string mit Fehlermeldung
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post">
<input type="text" size="20" name="text" />
<input type="submit" name="senden" value="Senden" />
</form>
<?php
if(isset($_POST['senden']))
{
if(is_int(check($_POST['text']))) echo "<br />TRUE\n";
else echo "<br />FALSE\n";
}
?>
---------------------------------------------------------------------------
Mir scheint dieser Weg über is_int() [zur Überprüfung auf den Rückgabewert 1 => alles OK]) etwas umständlich. Daher würde mich interessieren, wie ihr solche Unterscheidungen handhabt, wenn eine Funktionen entweder einen String oder einen Integer zurückgeben kann.
Grüße,
Fabian St.
Moin Fabian,
persönlich würde ich so vorgehen:
<?php
function check($ressource) # unsinnige Funktion zum Testen eines Stringes
{ # auf eine vorgeschriebene Länge von 10 Zeichen
$string = false;
if(strlen($ressource) < 10)
$string = "<h1>Eingabe zu kurz</h1>\n";
return $string; # Rückgabe: $string mit Fehlermeldung
}
if($s=check($_POST['text'])
{
echo $string;
abbruch(); # vielleicht auch die() oder exit()
}
Gruß aus Berlin!
eddi
In Berichtigung:
if($s=check($_POST['text'])
{
echo $s;
abbruch();
}
Hi XaraX!
persönlich würde ich so vorgehen:
<?php
function check($ressource) # unsinnige Funktion zum Testen eines Stringes
{ # auf eine vorgeschriebene Länge von 10 Zeichen
$string = false;
if(strlen($ressource) < 10){
$string = "<h1>Eingabe zu kurz</h1>\n";return $string; # Rückgabe: $string mit Fehlermeldung
}
if($s=check($_POST['text'])
{
echo $s;
abbruch(); # vielleicht auch die() oder exit()
}
Vielen Dank für deine Verbesserungen! Auf diese Weise spare ich mir die Überprüfung auf Integer/String und außerdem brauche ich eine Variable weniger :-)
Grüße,
Fabian St.