Malcolm Beck´s: Noch eine frage zu einer kleinen Klasse

Beitrag lesen

hi,

» Verbesserungsvorschläge?

Nicht viele. Um etwas zu lösen, braucht man die Aufgabenstellung und zwar ziemlich konkret. Aussagekräftigere Bezeichner tragen ebenso wie Kommentare zum Verständnis bei. Statt $array und $key benenn sie nach ihrer Aufgabe.

Ok, ich kommentiere dass ganze mal nach den Aufgaben:

  class InputErrorCheck  
  {  
    var $error;  
  
    /*  
     * Aufruf: new InputErrorCheck(array('name','beitrag')); -- Pflichtfelder in array definieren  
     *  
     * Wenn es einen POST gab, prüfen ob die im Array definierten Felder Leer oder ausgefüllt sind  
     * Jedes Feld, dass Leer verschickt wurde, wird mit „Namen“ im Array „error“ gespeichert  
     * alles andere gibt false zurück  
    */  
    function __construct($RequiredFields)  
    {  
      if (is_array($RequiredFields))  
      {  
        foreach ($RequiredFields as $PostKey)  
        {  
          if (isset($_POST[$PostKey]) AND empty($_POST[$PostKey]))  
          {  
            $this->error[] = $PostKey; // Wenn ein Fehler vorliegt, Array „error“ anlegen und mit Werten füllen  
          }  
        }  
      }  
      else  
      {  
        $this->error = false;  // Ansonsten false zurückgeben  
      }  
    }  
  
    /*  
     * Aufruf: InputErrorCheck::errorMessage($MyErr->error, 'css'); -- prüfen, ob ein Fehler vorliegt  
     * der zweite Parameter gibt an, welchen Rückgabewert ich benötige, also HTML oder CSS  
     *  
     * Wenn „CSS“ gewählt wurde, werden die Namen der betroffenen Felder kommasepariert gespeichert und das letzte Komma entfernt  
     * das kann man dann für eine CSS-Selektierung nutzen  
     * Rückgabewert „CSS“ (wenn „name“ und „beitrag“ Leer sind): „#name, #beitrag“  
     * Ausgabe im HTML (nur wenn ein Fehler voliegt): <style type="text/css">$cssError {borer-color:red}</style>  
     *  
     * Wenn „message“ als zweiter Parameter angegeben wird, werden die Namen der betroffenen Felder mit einem Bindestrich getrennt zurück gegeben  
     * Rückgabewert „message“ (wenn „name“ und „beitrag“ Leer sind): „name - beitrag“  
     * Ausgabe im HTML (auch nur wenn ein Fehler voliegt): Füllen sie die Felder $RequiredInput aus  
    */  
    public static function errorMessage($EmptyFields,$isKeyOf)  
    {  
      if(is_array($EmptyFields))  
      {  
        $AllErrorList = '';  
          foreach ($EmptyFields as $EmptyKey)  
          {  
            if ($isKeyOf == 'message')  
            {  
              $AllErrorList .= ucfirst($EmptyKey) . ' - ';  
            }  
            else if ($isKeyOf == 'css')  
            {  
              $AllErrorList .= '#' . $EmptyKey. ', ';  
            }  
          }  
        $AllErrorList = rtrim($AllErrorList, ' - ');  
        $AllErrorList = rtrim($AllErrorList, ', ');  
        return $AllErrorList ;  
      }  
      else  
      {  
        return false;  
      }  
    }  
  
  }

Und im Script, wo ich dann diese Funktion aufrufe sieht es wie folgt aus:

 $MyErr = new InputErrorCheck(array('name','beitrag')); // Pflichtfelder definieren, rückgabewert steht als array in $MyErr->error zur verfügung  
  
 if ($MyErr->error) // wenn es einen fehler gibt (an sich werden die Werte in Variablen gespeichert und später ausgegeben)  
 {  
   // Pflichtfelder Rot markieren, wenn nicht ausgefüllt  
   echo '<style type="text/css">' . InputErrorCheck::errorMessage($MyErr->error, 'css') . ' {border-color:#F00;}</style>' ;  
  
   // User mitteilen, welche Felder Pflicht sind  
   echo '<p>Füllen Sie bitte folgende Felder aus: '  
        . InputErrorCheck::errorMessage($MyErr->error, 'message')  
        . '</p>';  
 }

Und schau dir mal PHPDoc an.

Danke für den Hinweis, die PHPDoc kannte ich nicht, benutze lediglich dieses Manual.

mfg

--
echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
array(2) {
  ["SELFCODE"]=>
  string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
  ["Meaningful"]=>
  string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
}