2017-09-21 4 views
1

クラスの機能コール値

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); 
     } 

呼び出し方法

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

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

質問:私は$に値を得ることができるように、私は値を渡すことができますどのようにthis-> stmt-> bindValue( ":id"、 "1"、PDO :: PARAM_INT);

+0

そのコードから教えていますが、PDOクラスを拡張する場合は、'バインドタイプのようなものにそれを拡張するのは難しい:あなたは、関数でパラメータに使用します渡す必要はありません。 –

答えて

0

あなたのコードにはいくつかの間違いがあります。まず、$typeがnullの場合は、switch$typeNULLの場合にのみ実行されるため、is_null()とは逆のように見えますが、そうでない場合は条件が満たされません。さらに、switchNULL$typeをまだ処理しているので、その呼び出しは冗長です。

switchの中には、$typeでいくつかの異なる機能が呼び出されていますが、目的のものは何も得られません。あなたはこのようにそれを行う、あなたが必要とPARAMの種類を示す文字列を渡したい場合は、次の最後のコメントとして

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); 
} 

をそのデフォルト値なので、私は、PDO::PARAM_NULLswitchdefaultを設定したいです(「:キー」、「値」) `とそれ

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; 
}