Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
66fa7f84
Commit
66fa7f84
authored
Jun 06, 2017
by
Marco Pivetta
Committed by
GitHub
Jun 06, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2527 from phansys/ticket_2519
Normalize method signatures for `fetch()` and `fetchAll()`
parents
b331b1e3
cd1450a8
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
98 additions
and
57 deletions
+98
-57
UPGRADE.md
UPGRADE.md
+25
-0
ArrayStatement.php
lib/Doctrine/DBAL/Cache/ArrayStatement.php
+2
-2
ResultCacheStatement.php
lib/Doctrine/DBAL/Cache/ResultCacheStatement.php
+2
-2
DB2Statement.php
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Statement.php
+6
-6
MysqliStatement.php
lib/Doctrine/DBAL/Driver/Mysqli/MysqliStatement.php
+2
-2
OCI8Statement.php
lib/Doctrine/DBAL/Driver/OCI8/OCI8Statement.php
+2
-2
PDOStatement.php
lib/Doctrine/DBAL/Driver/PDOStatement.php
+7
-7
ResultStatement.php
lib/Doctrine/DBAL/Driver/ResultStatement.php
+33
-9
SQLAnywhereStatement.php
...Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereStatement.php
+2
-2
SQLSrvStatement.php
lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvStatement.php
+8
-6
Statement.php
lib/Doctrine/DBAL/Portability/Statement.php
+4
-4
Statement.php
lib/Doctrine/DBAL/Statement.php
+5
-15
No files found.
UPGRADE.md
View file @
66fa7f84
# Upgrade to 2.6
## MINOR BC BREAK: `fetch()` and `fetchAll()` method signatures in `Doctrine\DBAL\Driver\ResultStatement`
1.
``Doctrine\DBAL\Driver\ResultStatement::fetch()``
now has 3 arguments instead of 1, respecting
``PDO::fetch()``
signature.
Before:
Doctrine\DBAL\Driver\ResultStatement::fetch($fetchMode);
After:
Doctrine\DBAL\Driver\ResultStatement::fetch($fetchMode, $cursorOrientation, $cursorOffset);
2.
``Doctrine\DBAL\Driver\ResultStatement::fetchAll()``
now has 3 arguments instead of 1, respecting
``PDO::fetchAll()``
signature.
Before:
Doctrine\DBAL\Driver\ResultStatement::fetchAll($fetchMode);
After:
Doctrine\DBAL\Driver\ResultStatement::fetch($fetchMode, $fetchArgument, $ctorArgs);
## MINOR BC BREAK: URL-style DSN with percentage sign in password
URL-style DSNs (e.g.
``mysql://foo@bar:localhost/db``
) are now assumed to be percent-encoded
...
...
lib/Doctrine/DBAL/Cache/ArrayStatement.php
View file @
66fa7f84
...
...
@@ -98,7 +98,7 @@ class ArrayStatement implements \IteratorAggregate, ResultStatement
/**
* {@inheritdoc}
*/
public
function
fetch
(
$fetchMode
=
null
)
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
\PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
)
{
if
(
isset
(
$this
->
data
[
$this
->
num
]))
{
$row
=
$this
->
data
[
$this
->
num
++
];
...
...
@@ -122,7 +122,7 @@ class ArrayStatement implements \IteratorAggregate, ResultStatement
/**
* {@inheritdoc}
*/
public
function
fetchAll
(
$fetchMode
=
null
)
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
null
,
$ctorArgs
=
null
)
{
$rows
=
array
();
while
(
$row
=
$this
->
fetch
(
$fetchMode
))
{
...
...
lib/Doctrine/DBAL/Cache/ResultCacheStatement.php
View file @
66fa7f84
...
...
@@ -147,7 +147,7 @@ class ResultCacheStatement implements \IteratorAggregate, ResultStatement
/**
* {@inheritdoc}
*/
public
function
fetch
(
$fetchMode
=
null
)
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
\PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
)
{
if
(
$this
->
data
===
null
)
{
$this
->
data
=
array
();
...
...
@@ -179,7 +179,7 @@ class ResultCacheStatement implements \IteratorAggregate, ResultStatement
/**
* {@inheritdoc}
*/
public
function
fetchAll
(
$fetchMode
=
null
)
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
null
,
$ctorArgs
=
null
)
{
$rows
=
array
();
while
(
$row
=
$this
->
fetch
(
$fetchMode
))
{
...
...
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Statement.php
View file @
66fa7f84
...
...
@@ -26,7 +26,7 @@ class DB2Statement implements \IteratorAggregate, Statement
/**
* @var resource
*/
private
$_stmt
=
null
;
private
$_stmt
;
/**
* @var array
...
...
@@ -147,8 +147,8 @@ class DB2Statement implements \IteratorAggregate, Statement
public
function
errorInfo
()
{
return
array
(
0
=>
db2_stmt_errormsg
(),
1
=>
db2_stmt_error
(),
db2_stmt_errormsg
(),
db2_stmt_error
(),
);
}
...
...
@@ -207,7 +207,7 @@ class DB2Statement implements \IteratorAggregate, Statement
/**
* {@inheritdoc}
*/
public
function
fetch
(
$fetchMode
=
null
)
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
\PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
)
{
// do not try fetching from the statement if it's not expected to contain result
// in order to prevent exceptional situation
...
...
@@ -243,14 +243,14 @@ class DB2Statement implements \IteratorAggregate, Statement
case
\PDO
::
FETCH_OBJ
:
return
db2_fetch_object
(
$this
->
_stmt
);
default
:
throw
new
DB2Exception
(
"Given Fetch-Style "
.
$fetchMode
.
" is not supported."
);
throw
new
DB2Exception
(
'Given Fetch-Style '
.
$fetchMode
.
' is not supported.'
);
}
}
/**
* {@inheritdoc}
*/
public
function
fetchAll
(
$fetchMode
=
null
)
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
null
,
$ctorArgs
=
null
)
{
$rows
=
array
();
...
...
lib/Doctrine/DBAL/Driver/Mysqli/MysqliStatement.php
View file @
66fa7f84
...
...
@@ -263,7 +263,7 @@ class MysqliStatement implements \IteratorAggregate, Statement
/**
* {@inheritdoc}
*/
public
function
fetch
(
$fetchMode
=
null
)
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
\PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
)
{
// do not try fetching from the statement if it's not expected to contain result
// in order to prevent exceptional situation
...
...
@@ -313,7 +313,7 @@ class MysqliStatement implements \IteratorAggregate, Statement
/**
* {@inheritdoc}
*/
public
function
fetchAll
(
$fetchMode
=
null
)
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
null
,
$ctorArgs
=
null
)
{
$fetchMode
=
$fetchMode
?:
$this
->
_defaultFetchMode
;
...
...
lib/Doctrine/DBAL/Driver/OCI8/OCI8Statement.php
View file @
66fa7f84
...
...
@@ -378,7 +378,7 @@ class OCI8Statement implements \IteratorAggregate, Statement
/**
* {@inheritdoc}
*/
public
function
fetch
(
$fetchMode
=
null
)
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
\PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
)
{
// do not try fetching from the statement if it's not expected to contain result
// in order to prevent exceptional situation
...
...
@@ -405,7 +405,7 @@ class OCI8Statement implements \IteratorAggregate, Statement
/**
* {@inheritdoc}
*/
public
function
fetchAll
(
$fetchMode
=
null
)
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
null
,
$ctorArgs
=
null
)
{
$fetchMode
=
$fetchMode
?:
$this
->
_defaultFetchMode
;
...
...
lib/Doctrine/DBAL/Driver/PDOStatement.php
View file @
66fa7f84
...
...
@@ -111,18 +111,18 @@ class PDOStatement extends \PDOStatement implements Statement
/**
* {@inheritdoc}
*/
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
null
,
$cursorOffset
=
null
)
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
\PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
)
{
try
{
if
(
$fetchMode
===
null
&&
$cursorOrientation
===
null
&&
$cursorOffset
===
null
)
{
if
(
$fetchMode
===
null
&&
\PDO
::
FETCH_ORI_NEXT
===
$cursorOrientation
&&
0
===
$cursorOffset
)
{
return
parent
::
fetch
();
}
if
(
$cursorOrientation
===
null
&&
$cursorOffset
===
null
)
{
if
(
\PDO
::
FETCH_ORI_NEXT
===
$cursorOrientation
&&
0
===
$cursorOffset
)
{
return
parent
::
fetch
(
$fetchMode
);
}
if
(
$cursorOffset
===
null
)
{
if
(
0
===
$cursorOffset
)
{
return
parent
::
fetch
(
$fetchMode
,
$cursorOrientation
);
}
...
...
@@ -138,15 +138,15 @@ class PDOStatement extends \PDOStatement implements Statement
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
null
,
$ctorArgs
=
null
)
{
try
{
if
(
$fetchMode
===
null
&&
$fetchArgument
===
null
&&
$ctorArgs
===
null
)
{
if
(
$fetchMode
===
null
&&
null
===
$fetchArgument
&&
null
===
$ctorArgs
)
{
return
parent
::
fetchAll
();
}
if
(
$fetchArgument
===
null
&&
$ctorArgs
===
null
)
{
if
(
null
===
$fetchArgument
&&
null
===
$ctorArgs
)
{
return
parent
::
fetchAll
(
$fetchMode
);
}
if
(
$ctorArgs
===
null
)
{
if
(
null
===
$ctorArgs
)
{
return
parent
::
fetchAll
(
$fetchMode
,
$fetchArgument
);
}
...
...
lib/Doctrine/DBAL/Driver/ResultStatement.php
View file @
66fa7f84
...
...
@@ -58,29 +58,53 @@ interface ResultStatement extends \Traversable
/**
* Returns the next row of a result set.
*
* @param integer|null $fetchMode Controls how the next row will be returned to the caller.
* The value must be one of the PDO::FETCH_* constants,
* defaulting to PDO::FETCH_BOTH.
* @param int|null $fetchMode Controls how the next row will be returned to the caller.
* The value must be one of the \PDO::FETCH_* constants,
* defaulting to \PDO::FETCH_BOTH.
* @param int $cursorOrientation For a ResultStatement object representing a scrollable cursor,
* this value determines which row will be returned to the caller.
* This value must be one of the \PDO::FETCH_ORI_* constants,
* defaulting to \PDO::FETCH_ORI_NEXT. To request a scrollable
* cursor for your ResultStatement object, you must set the \PDO::ATTR_CURSOR
* attribute to \PDO::CURSOR_SCROLL when you prepare the SQL statement with
* \PDO::prepare().
* @param int $cursorOffset For a ResultStatement object representing a scrollable cursor for which the
* cursorOrientation parameter is set to \PDO::FETCH_ORI_ABS, this value
* specifies the absolute number of the row in the result set that shall be
* fetched.
* For a ResultStatement object representing a scrollable cursor for which the
* cursorOrientation parameter is set to \PDO::FETCH_ORI_REL, this value
* specifies the row to fetch relative to the cursor position before
* ResultStatement::fetch() was called.
*
* @return mixed The return value of this method on success depends on the fetch mode. In all cases, FALSE is
* returned on failure.
*
* @see PDO::FETCH_* constants.
*/
public
function
fetch
(
$fetchMode
=
null
);
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
\PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
);
/**
* Returns an array containing all of the result set rows.
*
* @param integer|null $fetchMode Controls how the next row will be returned to the caller.
* The value must be one of the PDO::FETCH_* constants,
* defaulting to PDO::FETCH_BOTH.
* @param int|null $fetchMode Controls how the next row will be returned to the caller.
* The value must be one of the \PDO::FETCH_* constants,
* defaulting to \PDO::FETCH_BOTH.
* @param int|null $fetchArgument This argument has a different meaning depending on the value of the $fetchMode parameter:
* * \PDO::FETCH_COLUMN: Returns the indicated 0-indexed column.
* * \PDO::FETCH_CLASS: Returns instances of the specified class, mapping the columns of each
* row to named properties in the class.
* * \PDO::FETCH_FUNC: Returns the results of calling the specified function, using each row's
* columns as parameters in the call.
* @param array|null $ctorArgs Controls how the next row will be returned to the caller.
* The value must be one of the \PDO::FETCH_* constants,
* defaulting to \PDO::FETCH_BOTH.
*
* @return array
*
* @see PDO::FETCH_* constants.
* @see
\
PDO::FETCH_* constants.
*/
public
function
fetchAll
(
$fetchMode
=
null
);
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
null
,
$ctorArgs
=
null
);
/**
* Returns a single column from the next row of a result set or FALSE if there are no more rows.
...
...
lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereStatement.php
View file @
66fa7f84
...
...
@@ -193,7 +193,7 @@ class SQLAnywhereStatement implements IteratorAggregate, Statement
*
* @throws SQLAnywhereException
*/
public
function
fetch
(
$fetchMode
=
null
)
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
\PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
)
{
if
(
!
is_resource
(
$this
->
result
))
{
return
false
;
...
...
@@ -235,7 +235,7 @@ class SQLAnywhereStatement implements IteratorAggregate, Statement
/**
* {@inheritdoc}
*/
public
function
fetchAll
(
$fetchMode
=
null
)
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
null
,
$ctorArgs
=
null
)
{
$rows
=
array
();
...
...
lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvStatement.php
View file @
66fa7f84
...
...
@@ -257,7 +257,7 @@ class SQLSrvStatement implements IteratorAggregate, Statement
$params
=
array
();
foreach
(
$this
->
variables
as
$column
=>
&
$variable
)
{
if
(
$this
->
types
[
$column
]
===
\PDO
::
PARAM_LOB
)
{
if
(
PDO
::
PARAM_LOB
===
$this
->
types
[
$column
]
)
{
$params
[
$column
-
1
]
=
array
(
&
$variable
,
SQLSRV_PARAM_IN
,
...
...
@@ -302,8 +302,10 @@ class SQLSrvStatement implements IteratorAggregate, Statement
/**
* {@inheritdoc}
*
* @throws SQLSrvException
*/
public
function
fetch
(
$fetchMode
=
null
)
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
)
{
// do not try fetching from the statement if it's not expected to contain result
// in order to prevent exceptional situation
...
...
@@ -318,25 +320,25 @@ class SQLSrvStatement implements IteratorAggregate, Statement
return
sqlsrv_fetch_array
(
$this
->
stmt
,
self
::
$fetchMap
[
$fetchMode
])
?:
false
;
}
if
(
$fetchMode
==
PDO
::
FETCH_OBJ
||
$fetchMode
==
PDO
::
FETCH_CLASS
)
{
if
(
in_array
(
$fetchMode
,
array
(
PDO
::
FETCH_OBJ
,
PDO
::
FETCH_CLASS
),
true
)
)
{
$className
=
$this
->
defaultFetchClass
;
$ctorArgs
=
$this
->
defaultFetchClassCtorArgs
;
if
(
count
(
$args
)
>=
2
)
{
$className
=
$args
[
1
];
$ctorArgs
=
(
isset
(
$args
[
2
])
)
?
$args
[
2
]
:
array
();
$ctorArgs
=
isset
(
$args
[
2
]
)
?
$args
[
2
]
:
array
();
}
return
sqlsrv_fetch_object
(
$this
->
stmt
,
$className
,
$ctorArgs
)
?:
false
;
}
throw
new
SQLSrvException
(
"Fetch mode is not supported!"
);
throw
new
SQLSrvException
(
'Fetch mode is not supported!'
);
}
/**
* {@inheritdoc}
*/
public
function
fetchAll
(
$fetchMode
=
null
)
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
null
,
$ctorArgs
=
null
)
{
$rows
=
array
();
...
...
lib/Doctrine/DBAL/Portability/Statement.php
View file @
66fa7f84
...
...
@@ -142,7 +142,7 @@ class Statement implements \IteratorAggregate, \Doctrine\DBAL\Driver\Statement
/**
* {@inheritdoc}
*/
public
function
fetch
(
$fetchMode
=
null
)
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
\PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
)
{
$fetchMode
=
$fetchMode
?:
$this
->
defaultFetchMode
;
...
...
@@ -159,12 +159,12 @@ class Statement implements \IteratorAggregate, \Doctrine\DBAL\Driver\Statement
/**
* {@inheritdoc}
*/
public
function
fetchAll
(
$fetchMode
=
null
,
$
columnIndex
=
0
)
public
function
fetchAll
(
$fetchMode
=
null
,
$
fetchArgument
=
null
,
$ctorArgs
=
null
)
{
$fetchMode
=
$fetchMode
?:
$this
->
defaultFetchMode
;
if
(
$
columnIndex
!=
0
)
{
$rows
=
$this
->
stmt
->
fetchAll
(
$fetchMode
,
$
columnIndex
);
if
(
$
fetchArgument
)
{
$rows
=
$this
->
stmt
->
fetchAll
(
$fetchMode
,
$
fetchArgument
);
}
else
{
$rows
=
$this
->
stmt
->
fetchAll
(
$fetchMode
);
}
...
...
lib/Doctrine/DBAL/Statement.php
View file @
66fa7f84
...
...
@@ -252,29 +252,19 @@ class Statement implements \IteratorAggregate, DriverStatement
}
/**
* Fetches the next row from a result set.
*
* @param integer|null $fetchMode
*
* @return mixed The return value of this function on success depends on the fetch type.
* In all cases, FALSE is returned on failure.
* {@inheritdoc}
*/
public
function
fetch
(
$fetchMode
=
null
)
public
function
fetch
(
$fetchMode
=
null
,
$cursorOrientation
=
\PDO
::
FETCH_ORI_NEXT
,
$cursorOffset
=
0
)
{
return
$this
->
stmt
->
fetch
(
$fetchMode
);
}
/**
* Returns an array containing all of the result set rows.
*
* @param integer|null $fetchMode
* @param mixed $fetchArgument
*
* @return array An array containing all of the remaining rows in the result set.
* {@inheritdoc}
*/
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
0
)
public
function
fetchAll
(
$fetchMode
=
null
,
$fetchArgument
=
null
,
$ctorArgs
=
null
)
{
if
(
$fetchArgument
!==
0
)
{
if
(
$fetchArgument
)
{
return
$this
->
stmt
->
fetchAll
(
$fetchMode
,
$fetchArgument
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment