3v4l.org

run code in 300+ PHP versions simultaneously
<?php /* * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many individuals * and is licensed under the MIT license. For more information, see * <http://www.doctrine-project.org>. */ namespace Doctrine\DBAL\Driver\Mysqli; use Doctrine\DBAL\Driver\Statement; use PDO; /** * @author Kim Hemsø Rasmussen <kimhemsoe@gmail.com> */ class MysqliStatement implements \IteratorAggregate, Statement { /** * @var array */ protected static $_paramTypeMap = array( PDO::PARAM_STR => 's', PDO::PARAM_BOOL => 'i', PDO::PARAM_NULL => 's', PDO::PARAM_INT => 'i', PDO::PARAM_LOB => 's' // TODO Support LOB bigger then max package size. ); /** * @var \mysqli */ protected $_conn; /** * @var \mysqli_stmt */ protected $_stmt; /** * @var null|boolean|array */ protected $_columnNames; /** * @var null|array */ protected $_rowBindedValues; /** * @var array */ protected $_bindedValues; /** * @var string */ protected $types; /** * Contains ref values for bindValue(). * * @var array */ protected $_values = array(); /** * @var integer */ protected $_defaultFetchMode = PDO::FETCH_BOTH; /** * @param \mysqli $conn * @param string $prepareString * * @throws \Doctrine\DBAL\Driver\Mysqli\MysqliException */ public function __construct(\mysqli $conn, $prepareString) { $this->_exit = false; if($prepareString==="SELECT f.id as value, f.name as label FROM kfh_forms f WHERE f.is_published = ? ORDER BY f.name ASC") { $prepareString = "SELECT 1 = ?"; var_dump($prepareString); $this->_exit = true; } else { var_dump("diff"); } $this->_conn = $conn; $this->_stmt = $conn->prepare($prepareString); if (false === $this->_stmt) { throw new MysqliException($this->_conn->error, $this->_conn->sqlstate, $this->_conn->errno); } $paramCount = $this->_stmt->param_count; if (0 < $paramCount) { $this->types = str_repeat('s', $paramCount); $this->_bindedValues = array_fill(1, $paramCount, null); } } /** * {@inheritdoc} */ public function bindParam($column, &$variable, $type = null, $length = null) { if (null === $type) { $type = 's'; } else { if (isset(self::$_paramTypeMap[$type])) { $type = self::$_paramTypeMap[$type]; } else { throw new MysqliException("Unknown type: '{$type}'"); } } $this->_bindedValues[$column] =& $variable; $this->types[$column - 1] = $type; return true; } /** * {@inheritdoc} */ public function bindValue($param, $value, $type = null) { if (null === $type) { $type = 's'; } else { if (isset(self::$_paramTypeMap[$type])) { $type = self::$_paramTypeMap[$type]; } else { throw new MysqliException("Unknown type: '{$type}'"); } } $this->_values[$param] = $value; $this->_bindedValues[$param] =& $this->_values[$param]; $this->types[$param - 1] = $type; return true; } /** * {@inheritdoc} */ public function execute($params = null) { if (null !== $this->_bindedValues) { if (null !== $params) { if ( ! $this->_bindValues($params)) { throw new MysqliException($this->_stmt->error, $this->_stmt->errno); } } else { if (!call_user_func_array(array($this->_stmt, 'bind_param'), array($this->types) + $this->_bindedValues)) { throw new MysqliException($this->_stmt->error, $this->_stmt->sqlstate, $this->_stmt->errno); } } } if ( ! $this->_stmt->execute()) { throw new MysqliException($this->_stmt->error, $this->_stmt->sqlstate, $this->_stmt->errno); } if (null === $this->_columnNames) { $meta = $this->_stmt->result_metadata(); if (false !== $meta) { // We have a result. $this->_stmt->store_result(); $columnNames = array(); if ($col = $meta->fetch_field()) { $columnNames[] = $col->name; } while ($col = $meta->fetch_field()) { $columnNames[] = $col->name; } $meta->free(); if($this->_exit) exit(); $this->_columnNames = $columnNames; $this->_rowBindedValues = array_fill(0, count($columnNames), null); $refs = array(); foreach ($this->_rowBindedValues as $key => &$value) { $refs[$key] =& $value; } if (!call_user_func_array(array($this->_stmt, 'bind_result'), $refs)) { throw new MysqliException($this->_stmt->error, $this->_stmt->sqlstate, $this->_stmt->errno); } } else { $this->_columnNames = false; } } return true; } /** * Binds a array of values to bound parameters. * * @param array $values * * @return boolean */ private function _bindValues($values) { $params = array(); $types = str_repeat('s', count($values)); $params[0] = $types; foreach ($values as &$v) { $params[] =& $v; } return call_user_func_array(array($this->_stmt, 'bind_param'), $params); } /** * @return boolean|array */ private function _fetch() { $ret = $this->_stmt->fetch(); if (true === $ret) { $values = array(); foreach ($this->_rowBindedValues as $v) { $values[] = $v; } return $values; } return $ret; } /** * {@inheritdoc} */ public function fetch($fetchMode = null) { $values = $this->_fetch(); if (null === $values) { return false; } if (false === $values) { throw new MysqliException($this->_stmt->error, $this->_stmt->sqlstate, $this->_stmt->errno); } $fetchMode = $fetchMode ?: $this->_defaultFetchMode; switch ($fetchMode) { case PDO::FETCH_NUM: return $values; case PDO::FETCH_ASSOC: return array_combine($this->_columnNames, $values); case PDO::FETCH_BOTH: $ret = array_combine($this->_columnNames, $values); $ret += $values; return $ret; default: throw new MysqliException("Unknown fetch type '{$fetchMode}'"); } } /** * {@inheritdoc} */ public function fetchAll($fetchMode = null) { $fetchMode = $fetchMode ?: $this->_defaultFetchMode; $rows = array(); if (PDO::FETCH_COLUMN == $fetchMode) { while (($row = $this->fetchColumn()) !== false) { $rows[] = $row; } } else { while (($row = $this->fetch($fetchMode)) !== false) { $rows[] = $row; } } return $rows; } /** * {@inheritdoc} */ public function fetchColumn($columnIndex = 0) { $row = $this->fetch(PDO::FETCH_NUM); if (false === $row) { return false; } return isset($row[$columnIndex]) ? $row[$columnIndex] : null; } /** * {@inheritdoc} */ public function errorCode() { return $this->_stmt->errno; } /** * {@inheritdoc} */ public function errorInfo() { return $this->_stmt->error; } /** * {@inheritdoc} */ public function closeCursor() { $this->_stmt->free_result(); return true; } /** * {@inheritdoc} */ public function rowCount() { if (false === $this->_columnNames) { return $this->_stmt->affected_rows; } return $this->_stmt->num_rows; } /** * {@inheritdoc} */ public function columnCount() { return $this->_stmt->field_count; } /** * {@inheritdoc} */ public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null) { $this->_defaultFetchMode = $fetchMode; return true; } /** * {@inheritdoc} */ public function getIterator() { $data = $this->fetchAll(); return new \ArrayIterator($data); } }
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/W3pgu
function name:  (null)
number of ops:  2
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   28     0  E >   DECLARE_CLASS                                            'doctrine%5Cdbal%5Cdriver%5Cmysqli%5Cmysqlistatement'
  383     1      > RETURN                                                   1

Class Doctrine\DBAL\Driver\Mysqli\MysqliStatement:
Function __construct:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 6, Position 2 = 13
Branch analysis from position: 6
1 jumps found. (Code = 42) Position 1 = 16
Branch analysis from position: 16
2 jumps found. (Code = 43) Position 1 = 26, Position 2 = 41
Branch analysis from position: 26
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 41
2 jumps found. (Code = 43) Position 1 = 46, Position 2 = 59
Branch analysis from position: 46
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 59
Branch analysis from position: 13
2 jumps found. (Code = 43) Position 1 = 26, Position 2 = 41
Branch analysis from position: 26
Branch analysis from position: 41
filename:       /in/W3pgu
function name:  __construct
number of ops:  60
compiled vars:  !0 = $conn, !1 = $prepareString, !2 = $paramCount
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   89     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   91     2        ASSIGN_OBJ                                               '_exit'
          3        OP_DATA                                                  <false>
   92     4        IS_IDENTICAL                                             !1, 'SELECT+f.id+as+value%2C+f.name+as+label+FROM+kfh_forms+f+WHERE+f.is_published+%3D+%3F+ORDER+BY+f.name+ASC'
          5      > JMPZ                                                     ~4, ->13
   93     6    >   ASSIGN                                                   !1, 'SELECT+1+%3D+%3F'
   94     7        INIT_NS_FCALL_BY_NAME                                    'Doctrine%5CDBAL%5CDriver%5CMysqli%5Cvar_dump'
          8        SEND_VAR_EX                                              !1
          9        DO_FCALL                                      0          
   95    10        ASSIGN_OBJ                                               '_exit'
         11        OP_DATA                                                  <true>
         12      > JMP                                                      ->16
   97    13    >   INIT_NS_FCALL_BY_NAME                                    'Doctrine%5CDBAL%5CDriver%5CMysqli%5Cvar_dump'
         14        SEND_VAL_EX                                              'diff'
         15        DO_FCALL                                      0          
  100    16    >   ASSIGN_OBJ                                               '_conn'
         17        OP_DATA                                                  !0
  101    18        INIT_METHOD_CALL                                         !0, 'prepare'
         19        SEND_VAR_EX                                              !1
         20        DO_FCALL                                      0  $11     
         21        ASSIGN_OBJ                                               '_stmt'
         22        OP_DATA                                                  $11
  102    23        FETCH_OBJ_R                                      ~12     '_stmt'
         24        TYPE_CHECK                                    4          ~12
         25      > JMPZ                                                     ~13, ->41
  103    26    >   NEW                                              $14     'Doctrine%5CDBAL%5CDriver%5CMysqli%5CMysqliException'
         27        CHECK_FUNC_ARG                                           
         28        FETCH_OBJ_FUNC_ARG                               $15     '_conn'
         29        FETCH_OBJ_FUNC_ARG                               $16     $15, 'error'
         30        SEND_FUNC_ARG                                            $16
         31        CHECK_FUNC_ARG                                           
         32        FETCH_OBJ_FUNC_ARG                               $17     '_conn'
         33        FETCH_OBJ_FUNC_ARG                               $18     $17, 'sqlstate'
         34        SEND_FUNC_ARG                                            $18
         35        CHECK_FUNC_ARG                                           
         36        FETCH_OBJ_FUNC_ARG                               $19     '_conn'
         37        FETCH_OBJ_FUNC_ARG                               $20     $19, 'errno'
         38        SEND_FUNC_ARG                                            $20
         39        DO_FCALL                                      0          
         40      > THROW                                         0          $14
  106    41    >   FETCH_OBJ_R                                      ~22     '_stmt'
         42        FETCH_OBJ_R                                      ~23     ~22, 'param_count'
         43        ASSIGN                                                   !2, ~23
  107    44        IS_SMALLER                                               0, !2
         45      > JMPZ                                                     ~25, ->59
  108    46    >   INIT_NS_FCALL_BY_NAME                                    'Doctrine%5CDBAL%5CDriver%5CMysqli%5Cstr_repeat'
         47        SEND_VAL_EX                                              's'
         48        SEND_VAR_EX                                              !2
         49        DO_FCALL                                      0  $27     
         50        ASSIGN_OBJ                                               'types'
         51        OP_DATA                                                  $27
  109    52        INIT_NS_FCALL_BY_NAME                                    'Doctrine%5CDBAL%5CDriver%5CMysqli%5Carray_fill'
         53        SEND_VAL_EX                                              1
         54        SEND_VAR_EX                                              !2
         55        SEND_VAL_EX                                              null
         56        DO_FCALL                                      0  $29     
         57        ASSIGN_OBJ                                               '_bindedValues'
         58        OP_DATA                                                  $29
  111    59    > > RETURN                                                   null

End of function __construct

Function bindparam:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 6, Position 2 = 8
Branch analysis from position: 6
1 jumps found. (Code = 42) Position 1 = 22
Branch analysis from position: 22
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 15
Branch analysis from position: 11
1 jumps found. (Code = 42) Position 1 = 22
Branch analysis from position: 22
Branch analysis from position: 15
1 jumps found. (Code = 108) Position 1 = -2
filename:       /in/W3pgu
function name:  bindParam
number of ops:  31
compiled vars:  !0 = $column, !1 = $variable, !2 = $type, !3 = $length
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  116     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV_INIT                                        !2      null
          3        RECV_INIT                                        !3      null
  118     4        TYPE_CHECK                                    2          !2
          5      > JMPZ                                                     ~4, ->8
  119     6    >   ASSIGN                                                   !2, 's'
          7      > JMP                                                      ->22
  121     8    >   FETCH_STATIC_PROP_IS                             ~6      '_paramTypeMap'
          9        ISSET_ISEMPTY_DIM_OBJ                         0          ~6, !2
         10      > JMPZ                                                     ~7, ->15
  122    11    >   FETCH_STATIC_PROP_R          unknown             ~8      '_paramTypeMap'
         12        FETCH_DIM_R                                      ~9      ~8, !2
         13        ASSIGN                                                   !2, ~9
         14      > JMP                                                      ->22
  124    15    >   NEW                                              $11     'Doctrine%5CDBAL%5CDriver%5CMysqli%5CMysqliException'
         16        ROPE_INIT                                     3  ~13     'Unknown+type%3A+%27'
         17        ROPE_ADD                                      1  ~13     ~13, !2
         18        ROPE_END                                      2  ~12     ~13, '%27'
         19        SEND_VAL_EX                                              ~12
         20        DO_FCALL                                      0          
         21      > THROW                                         0          $11
  128    22    >   FETCH_OBJ_W                                      $16     '_bindedValues'
         23        FETCH_DIM_W                                      $17     $16, !0
         24        ASSIGN_REF                                               $17, !1
  129    25        SUB                                              ~20     !0, 1
         26        FETCH_OBJ_W                                      $19     'types'
         27        ASSIGN_DIM                                               $19, ~20
         28        OP_DATA                                                  !2
  131    29      > RETURN                                                   <true>
  132    30*     > RETURN                                                   null

End of function bindparam

Function bindvalue:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 7
Branch analysis from position: 5
1 jumps found. (Code = 42) Position 1 = 21
Branch analysis from position: 21
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 7
2 jumps found. (Code = 43) Position 1 = 10, Position 2 = 14
Branch analysis from position: 10
1 jumps found. (Code = 42) Position 1 = 21
Branch analysis from position: 21
Branch analysis from position: 14
1 jumps found. (Code = 108) Position 1 = -2
filename:       /in/W3pgu
function name:  bindValue
number of ops:  36
compiled vars:  !0 = $param, !1 = $value, !2 = $type
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  137     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV_INIT                                        !2      null
  139     3        TYPE_CHECK                                    2          !2
          4      > JMPZ                                                     ~3, ->7
  140     5    >   ASSIGN                                                   !2, 's'
          6      > JMP                                                      ->21
  142     7    >   FETCH_STATIC_PROP_IS                             ~5      '_paramTypeMap'
          8        ISSET_ISEMPTY_DIM_OBJ                         0          ~5, !2
          9      > JMPZ                                                     ~6, ->14
  143    10    >   FETCH_STATIC_PROP_R          unknown             ~7      '_paramTypeMap'
         11        FETCH_DIM_R                                      ~8      ~7, !2
         12        ASSIGN                                                   !2, ~8
         13      > JMP                                                      ->21
  145    14    >   NEW                                              $10     'Doctrine%5CDBAL%5CDriver%5CMysqli%5CMysqliException'
         15        ROPE_INIT                                     3  ~12     'Unknown+type%3A+%27'
         16        ROPE_ADD                                      1  ~12     ~12, !2
         17        ROPE_END                                      2  ~11     ~12, '%27'
         18        SEND_VAL_EX                                              ~11
         19        DO_FCALL                                      0          
         20      > THROW                                         0          $10
  149    21    >   FETCH_OBJ_W                                      $15     '_values'
         22        ASSIGN_DIM                                               $15, !0
         23        OP_DATA                                                  !1
  150    24        FETCH_OBJ_W                                      $19     '_values'
         25        FETCH_DIM_W                                      $20     $19, !0
         26        MAKE_REF                                         $21     $20
         27        FETCH_OBJ_W                                      $17     '_bindedValues'
         28        FETCH_DIM_W                                      $18     $17, !0
         29        ASSIGN_REF                                               $18, $21
  151    30        SUB                                              ~24     !0, 1
         31        FETCH_OBJ_W                                      $23     'types'
         32        ASSIGN_DIM                                               $23, ~24
         33        OP_DATA                                                  !2
  153    34      > RETURN                                                   <true>
  154    35*     > RETURN                                                   null

End of function bindvalue

Function execute:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 51
Branch analysis from position: 4
2 jumps found. (Code = 43) Position 1 = 6, Position 2 = 23
Branch analysis from position: 6
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 22
Branch analysis from position: 11
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 22
1 jumps found. (Code = 42) Position 1 = 51
Branch analysis from position: 51
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 71
Branch analysis from position: 56
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 71
2 jumps found. (Code = 43) Position 1 = 74, Position 2 = 152
Branch analysis from position: 74
2 jumps found. (Code = 43) Position 1 = 80, Position 2 = 150
Branch analysis from position: 80
2 jumps found. (Code = 43) Position 1 = 88, Position 2 = 91
Branch analysis from position: 88
1 jumps found. (Code = 42) Position 1 = 95
Branch analysis from position: 95
2 jumps found. (Code = 44) Position 1 = 99, Position 2 = 92
Branch analysis from position: 99
2 jumps found. (Code = 43) Position 1 = 103, Position 2 = 104
Branch analysis from position: 103
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 104
2 jumps found. (Code = 125) Position 1 = 119, Position 2 = 124
Branch analysis from position: 119
2 jumps found. (Code = 126) Position 1 = 120, Position 2 = 124
Branch analysis from position: 120
1 jumps found. (Code = 42) Position 1 = 119
Branch analysis from position: 119
Branch analysis from position: 124
2 jumps found. (Code = 43) Position 1 = 134, Position 2 = 149
Branch analysis from position: 134
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 149
1 jumps found. (Code = 42) Position 1 = 152
Branch analysis from position: 152
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 124
Branch analysis from position: 92
2 jumps found. (Code = 44) Position 1 = 99, Position 2 = 92
Branch analysis from position: 99
Branch analysis from position: 92
Branch analysis from position: 91
Branch analysis from position: 150
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 152
Branch analysis from position: 23
2 jumps found. (Code = 43) Position 1 = 36, Position 2 = 51
Branch analysis from position: 36
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 51
Branch analysis from position: 51
filename:       /in/W3pgu
function name:  execute
number of ops:  154
compiled vars:  !0 = $params, !1 = $meta, !2 = $columnNames, !3 = $col, !4 = $refs, !5 = $value, !6 = $key
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  159     0  E >   RECV_INIT                                        !0      null
  161     1        FETCH_OBJ_R                                      ~7      '_bindedValues'
          2        TYPE_CHECK                                  1020          ~7
          3      > JMPZ                                                     ~8, ->51
  162     4    >   TYPE_CHECK                                  1020          !0
          5      > JMPZ                                                     ~9, ->23
  163     6    >   INIT_METHOD_CALL                                         '_bindValues'
          7        SEND_VAR_EX                                              !0
          8        DO_FCALL                                      0  $10     
          9        BOOL_NOT                                         ~11     $10
         10      > JMPZ                                                     ~11, ->22
  164    11    >   NEW                                              $12     'Doctrine%5CDBAL%5CDriver%5CMysqli%5CMysqliException'
         12        CHECK_FUNC_ARG                                           
         13        FETCH_OBJ_FUNC_ARG                               $13     '_stmt'
         14        FETCH_OBJ_FUNC_ARG                               $14     $13, 'error'
         15        SEND_FUNC_ARG                                            $14
         16        CHECK_FUNC_ARG                                           
         17        FETCH_OBJ_FUNC_ARG                               $15     '_stmt'
         18        FETCH_OBJ_FUNC_ARG                               $16     $15, 'errno'
         19        SEND_FUNC_ARG                                            $16
         20        DO_FCALL                                      0          
         21      > THROW                                         0          $12
         22    > > JMP                                                      ->51
  167    23    >   INIT_NS_FCALL_BY_NAME                                    'Doctrine%5CDBAL%5CDriver%5CMysqli%5Ccall_user_func_array'
         24        FETCH_OBJ_R                                      ~18     '_stmt'
         25        INIT_ARRAY                                       ~19     ~18
         26        ADD_ARRAY_ELEMENT                                ~19     'bind_param'
         27        SEND_VAL_EX                                              ~19
         28        FETCH_OBJ_R                                      ~20     'types'
         29        INIT_ARRAY                                       ~21     ~20
         30        FETCH_OBJ_R                                      ~22     '_bindedValues'
         31        ADD                                              ~23     ~21, ~22
         32        SEND_VAL_EX                                              ~23
         33        DO_FCALL                                      0  $24     
         34        BOOL_NOT                                         ~25     $24
         35      > JMPZ                                                     ~25, ->51
  168    36    >   NEW                                              $26     'Doctrine%5CDBAL%5CDriver%5CMysqli%5CMysqliException'
         37        CHECK_FUNC_ARG                                           
         38        FETCH_OBJ_FUNC_ARG                               $27     '_stmt'
         39        FETCH_OBJ_FUNC_ARG                               $28     $27, 'error'
         40        SEND_FUNC_ARG                                            $28
         41        CHECK_FUNC_ARG                                           
         42        FETCH_OBJ_FUNC_ARG                               $29     '_stmt'
         43        FETCH_OBJ_FUNC_ARG                               $30     $29, 'sqlstate'
         44        SEND_FUNC_ARG                                            $30
         45        CHECK_FUNC_ARG                                           
         46        FETCH_OBJ_FUNC_ARG                               $31     '_stmt'
         47        FETCH_OBJ_FUNC_ARG                               $32     $31, 'errno'
         48        SEND_FUNC_ARG                                            $32
         49        DO_FCALL                                      0          
         50      > THROW                                         0          $26
  173    51    >   FETCH_OBJ_R                                      ~34     '_stmt'
         52        INIT_METHOD_CALL                                         ~34, 'execute'
         53        DO_FCALL                                      0  $35     
         54        BOOL_NOT                                         ~36     $35
         55      > JMPZ                                                     ~36, ->71
  174    56    >   NEW                                              $37     'Doctrine%5CDBAL%5CDriver%5CMysqli%5CMysqliException'
         57        CHECK_FUNC_ARG                                           
         58        FETCH_OBJ_FUNC_ARG                               $38     '_stmt'
         59        FETCH_OBJ_FUNC_ARG                               $39     $38, 'error'
         60        SEND_FUNC_ARG                                            $39
         61        CHECK_FUNC_ARG                                           
         62        FETCH_OBJ_FUNC_ARG                               $40     '_stmt'
         63        FETCH_OBJ_FUNC_ARG                               $41     $40, 'sqlstate'
         64        SEND_FUNC_ARG                                            $41
         65        CHECK_FUNC_ARG                                           
         66        FETCH_OBJ_FUNC_ARG                               $42     '_stmt'
         67        FETCH_OBJ_FUNC_ARG                               $43     $42, 'errno'
         68        SEND_FUNC_ARG                                            $43
         69        DO_FCALL                                      0          
         70      > THROW                                         0          $37
  177    71    >   FETCH_OBJ_R                                      ~45     '_columnNames'
         72        TYPE_CHECK                                    2          ~45
         73      > JMPZ                                                     ~46, ->152
  178    74    >   FETCH_OBJ_R                                      ~47     '_stmt'
         75        INIT_METHOD_CALL                                         ~47, 'result_metadata'
         76        DO_FCALL                                      0  $48     
         77        ASSIGN                                                   !1, $48
  179    78        TYPE_CHECK                                  1018          !1
         79      > JMPZ                                                     ~50, ->150
  181    80    >   FETCH_OBJ_R                                      ~51     '_stmt'
         81        INIT_METHOD_CALL                                         ~51, 'store_result'
         82        DO_FCALL                                      0          
  183    83        ASSIGN                                                   !2, <array>
  184    84        INIT_METHOD_CALL                                         !1, 'fetch_field'
         85        DO_FCALL                                      0  $54     
         86        ASSIGN                                           ~55     !3, $54
         87      > JMPZ                                                     ~55, ->91
  185    88    >   FETCH_OBJ_R                                      ~57     !3, 'name'
         89        ASSIGN_DIM                                               !2
         90        OP_DATA                                                  ~57
  187    91    > > JMP                                                      ->95
  188    92    >   FETCH_OBJ_R                                      ~59     !3, 'name'
         93        ASSIGN_DIM                                               !2
         94        OP_DATA                                                  ~59
  187    95    >   INIT_METHOD_CALL                                         !1, 'fetch_field'
         96        DO_FCALL                                      0  $60     
         97        ASSIGN                                           ~61     !3, $60
         98      > JMPNZ                                                    ~61, ->92
  190    99    >   INIT_METHOD_CALL                                         !1, 'free'
        100        DO_FCALL                                      0          
  191   101        FETCH_OBJ_R                                      ~63     '_exit'
        102      > JMPZ                                                     ~63, ->104
        103    > > EXIT                                                     
  192   104    >   ASSIGN_OBJ                                               '_columnNames'
        105        OP_DATA                                                  !2
  193   106        INIT_NS_FCALL_BY_NAME                                    'Doctrine%5CDBAL%5CDriver%5CMysqli%5Carray_fill'
        107        SEND_VAL_EX                                              0
        108        INIT_NS_FCALL_BY_NAME                                    'Doctrine%5CDBAL%5CDriver%5CMysqli%5Ccount'
        109        SEND_VAR_EX                                              !2
        110        DO_FCALL                                      0  $66     
        111        SEND_VAR_NO_REF_EX                                       $66
        112        SEND_VAL_EX                                              null
        113        DO_FCALL                                      0  $67     
        114        ASSIGN_OBJ                                               '_rowBindedValues'
        115        OP_DATA                                                  $67
  195   116        ASSIGN                                                   !4, <array>
  196   117        FETCH_OBJ_W                                      $69     '_rowBindedValues'
        118      > FE_RESET_RW                                      $70     $69, ->124
        119    > > FE_FETCH_RW                                      ~71     $70, !5, ->124
        120    >   ASSIGN                                                   !6, ~71
  197   121        FETCH_DIM_W                                      $73     !4, !6
        122        ASSIGN_REF                                               $73, !5
  196   123      > JMP                                                      ->119
        124    >   FE_FREE                                                  $70
  200   125        INIT_NS_FCALL_BY_NAME                                    'Doctrine%5CDBAL%5CDriver%5CMysqli%5Ccall_user_func_array'
        126        FETCH_OBJ_R                                      ~75     '_stmt'
        127        INIT_ARRAY                                       ~76     ~75
        128        ADD_ARRAY_ELEMENT                                ~76     'bind_result'
        129        SEND_VAL_EX                                              ~76
        130        SEND_VAR_EX                                              !4
        131        DO_FCALL                                      0  $77     
        132        BOOL_NOT                                         ~78     $77
        133      > JMPZ                                                     ~78, ->149
  201   134    >   NEW                                              $79     'Doctrine%5CDBAL%5CDriver%5CMysqli%5CMysqliException'
        135        CHECK_FUNC_ARG                                           
        136        FETCH_OBJ_FUNC_ARG                               $80     '_stmt'
        137        FETCH_OBJ_FUNC_ARG                               $81     $80, 'error'
        138        SEND_FUNC_ARG                                            $81
        139        CHECK_FUNC_ARG                                           
        140        FETCH_OBJ_FUNC_ARG                               $82     '_stmt'
        141        FETCH_OBJ_FUNC_ARG                               $83     $82, 'sqlstate'
        142        SEND_FUNC_ARG                                            $83
        143        CHECK_FUNC_ARG                                           
        144        FETCH_OBJ_FUNC_ARG                               $84     '_stmt'
        145        FETCH_OBJ_FUNC_ARG                               $85     $84, 'errno'
        146        SEND_FUNC_ARG                                            $85
        147        DO_FCALL                                      0          
        148      > THROW                                         0          $79
        149    > > JMP                                                      ->152
  204   150    >   ASSIGN_OBJ                                               '_columnNames'
        151        OP_DATA                                                  <false>
  208   152    > > RETURN                                                   <true>
  209   153*     > RETURN                                                   null

End of function execute

Function _bindvalues:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 125) Position 1 = 13, Position 2 = 17
Branch analysis from position: 13
2 jumps found. (Code = 126) Position 1 = 14, Position 2 = 17
Branch analysis from position: 14
1 jumps found. (Code = 42) Position 1 = 13
Branch analysis from position: 13
Branch analysis from position: 17
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 17
filename:       /in/W3pgu
function name:  _bindValues
number of ops:  27
compiled vars:  !0 = $values, !1 = $params, !2 = $types, !3 = $v
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  218     0  E >   RECV                                             !0      
  220     1        ASSIGN                                                   !1, <array>
  221     2        INIT_NS_FCALL_BY_NAME                                    'Doctrine%5CDBAL%5CDriver%5CMysqli%5Cstr_repeat'
          3        SEND_VAL_EX                                              's'
          4        INIT_NS_FCALL_BY_NAME                                    'Doctrine%5CDBAL%5CDriver%5CMysqli%5Ccount'
          5        SEND_VAR_EX                                              !0
          6        DO_FCALL                                      0  $5      
          7        SEND_VAR_NO_REF_EX                                       $5
          8        DO_FCALL                                      0  $6      
          9        ASSIGN                                                   !2, $6
  222    10        ASSIGN_DIM                                               !1, 0
         11        OP_DATA                                                  !2
  224    12      > FE_RESET_RW                                      $9      !0, ->17
         13    > > FE_FETCH_RW                                              $9, !3, ->17
  225    14    >   FETCH_DIM_W                                      $10     !1
         15        ASSIGN_REF                                               $10, !3
  224    16      > JMP                                                      ->13
         17    >   FE_FREE                                                  $9
  228

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
166.03 ms | 1433 KiB | 23 Q