Fabian St.: Rückgabewerte von Funktionen

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.

--
Meine Website: http://fabis-site.net
--> XHTML, CSS, PHP-Formmailer, Linux
---------------------
fabi@erde ~# whatis spam
spam: nothing appropriate
---------------------
Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
  1. 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

    1. In Berichtigung:

      if($s=check($_POST['text'])
              {

      echo $s;

      abbruch();
              }

    2. 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.

      --
      Meine Website: http://fabis-site.net
      --> XHTML, CSS, PHP-Formmailer, Linux
      ---------------------
      fabi@erde ~# whatis spam
      spam: nothing appropriate
      ---------------------
      Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)