2017-09-21 9 views
1

fonction de la classevaleur d'appel en classe AOP

public function bind($param, $value, $type = null) 
     { 
      if (is_null($type)) { 
       switch (true) { 
        case is_int($value): 
         $type = PDO::PARAM_INT; 
         break; 
        case is_bool($value): 
         $type = PDO::PARAM_BOOL; 
         break; 
        case is_null($value): 
         $type = PDO::PARAM_NULL; 
         break; 
        default: 
         $type = PDO::PARAM_STR; 
       } 
      } 
      $this->stmt->bindValue($param, $value, $type); 
     } 

méthode d'appel

`$this->bind(":id","1","is_int");` 

//output = $this->stmt->bindValue(:id,1,is_int); 

Question: Comment puis-je passer la valeur afin que je puisse obtenir la valeur à $ this-> stmt-> bindValue (": id", "1", PDO :: PARAM_INT);

+0

il est difficile de dire à partir de votre code, mais si vous étendez la classe AOP vous étendez à quelque chose comme 'bindType (« : touche », « valeur »)' et n'aurait pas besoin de passer. –

Répondre

0

Vous avez quelques erreurs dans votre code. D'abord, vous vérifiez si $type est nul avec is_null(), ce qui semble être le contraire de ce que vous voulez, car le switch ne s'exécutera que si $type est NULL, et si c'est le cas, aucune des conditions ne sera remplie. En outre, cet appel est redondant puisque vous continuez à gérer un $type de NULL dans votre switch.

À l'intérieur de votre switch, vous appelez plusieurs fonctions différentes sur $type, mais aucune n'aura ce que vous voulez. Si vous voulez passer une chaîne pour indiquer quel type de PARAM dont vous avez besoin, faites comme ceci:

public function bind($param, $value, $type = null) 
{ 
    switch ($type) { 
     case "is_int": 
      $type = PDO::PARAM_INT; 
      break; 
     case "is_bool": 
      $type = PDO::PARAM_BOOL; 
      break; 
     case "is_null": 
      $type = PDO::PARAM_NULL; 
      break; 
     default: 
      $type = PDO::PARAM_STR; 
    } 
    $this->stmt->bindValue($param, $value, $type); 
} 

En dernier commentaire, je mis la default du switch à PDO::PARAM_NULL, puisque c'est la valeur par défaut vous utilisez pour le paramètre dans la fonction:

switch ($type) { 
    case "is_int": 
     $type = PDO::PARAM_INT; 
     break; 
    case "is_bool": 
     $type = PDO::PARAM_BOOL; 
     break; 
    case "is_null": 
     $type = PDO::PARAM_NULL; 
     break; 
    case "is_string": 
     $type = PDO::PARAM_STR; 
     break; 
    default: 
     $type = PDO::PARAM_NULL; 
}