getText() публичный Метод

public getText ( )
Пример #1
0
 public static function condition($context, $prefix, $expr, $args)
 {
     if (!empty($expr)) {
         if ($args) {
             //因为PDO不支持绑定数组变量, 这里需要手动展开数组
             //也就是说把 where("id IN(?)", [1,2])  展开成 where("id IN(?,?)", 1,2)
             $cutted = null;
             $cut = null;
             $toReplace = array();
             $newArgs = array();
             //找到所有数组对应的?符位置
             foreach ($args as $k => $arg) {
                 if (is_array($arg) || is_a($arg, 'phprs\\ezsql\\Native')) {
                     if (!$cutted) {
                         $cut = new NestedStringCut($expr);
                         $cutted = $cut->getText();
                     }
                     //找到第$k个?符
                     $pos = self::findQ($cutted, 0, $k);
                     $pos = $cut->mapPos($pos);
                     Verify::isTrue($pos !== false, new \InvalidArgumentException("unmatched params and ? @ {$expr}"));
                     if (is_array($arg)) {
                         $stubs = [];
                         foreach ($arg as $i) {
                             if (is_a($i, 'phprs\\ezsql\\Native')) {
                                 $stubs[] = strval($i);
                             } else {
                                 $stubs[] = '?';
                                 $newArgs[] = $i;
                             }
                         }
                         $stubs = implode(',', $stubs);
                     } else {
                         $stubs = strval($arg);
                     }
                     $toReplace[] = [$pos, $stubs];
                 } else {
                     $newArgs[] = $arg;
                 }
             }
             if (count($toReplace)) {
                 $toReplace = array_reverse($toReplace);
                 foreach ($toReplace as $i) {
                     list($pos, $v) = $i;
                     $expr = substr($expr, 0, $pos) . $v . substr($expr, $pos + 1);
                 }
                 $args = $newArgs;
             }
         }
         $context->appendSql($prefix . ' ' . $expr);
         if ($args) {
             $context->appendParams($args);
         }
     }
 }