2010-11-24 16 views
0

Im obtenir erreur sur la ligne 4erreur de fonction PHP T_FUNCTION

Parse error: erreur de syntaxe, T_FUNCTION inattendue dans C: \ xampp \ htdocs \ work \ ACCS \ admin \ form-validator.php sur la ligne 21

quelqu'un peut-il aider?

public function email($message='') 
    { 
     $message = (empty ($message)) ? '%s is an invalid email address.' : $message; 
     $this->set_rule(__FUNCTION__, function($email) { 
      return (filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) ? FALSE : TRUE; 
     }, $message); 
     return $this; 
    } 


private function set_rule($rule, $function, $message='') 
    { 
     // do not attempt to validate when no post data is present 
     if ($this->haspostdata) { 
      if (! array_key_exists($rule, $this->rules)) { 
       $this->rules[$rule] = TRUE; 
       if (! array_key_exists($rule, $this->functions) && is_callable($function)) { 
        $this->functions[$rule] = $function; 
       } 
       if (!empty ($message)) { 
        $this->messages[$rule] = $message; 
       } 
      } 
     } 
    } 
+0

est 'set_rule()' attendant une fermeture en 2ème arg? – stillstanding

+4

Utilisez-vous PHP> = 5.3? – KingCrunch

+0

J'ai éditer la question, s'il vous plaît vérifier maintenant –

Répondre

4

Votre code est parfaitement valide. L'erreur sonne comme si vous n'utilisiez pas PHP5.3, ce qui est requis lors de l'utilisation des fermetures.

La façon pré-5.3 serait:

private function emailRule($email) 
{ 
    return (filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) ? FALSE : TRUE; 
} 

public function email($message='') 
{ 
    $message = (empty ($message)) ? '%s is an invalid email address.' : $message; 
    $this->set_rule(__FUNCTION__, array($this, 'emailRule'), $message); 
    return $this; 
} 
+0

ya, c'est le problème. Quelles sont les alternatives? –

+0

@ g.b .: Il n'y a pas d'alternatives raisonnables. (NO! 'Create_function' n'est PAS une alternative!) – NikiC