Replace InvalidArgumentException in the mysqli driver with a driver-level one

parent 2422fedd
...@@ -15,8 +15,8 @@ use function sprintf; ...@@ -15,8 +15,8 @@ use function sprintf;
*/ */
final class FailedReadingStreamOffset extends AbstractException final class FailedReadingStreamOffset extends AbstractException
{ {
public static function new(int $offset): self public static function new(int $parameter): self
{ {
return new self(sprintf('Failed reading the stream resource for parameter offset %d.', $offset)); return new self(sprintf('Failed reading the stream resource for parameter #%d.', $parameter));
} }
} }
<?php
declare(strict_types=1);
namespace Doctrine\DBAL\Driver\Mysqli\Exception;
use Doctrine\DBAL\Driver\AbstractException;
use function sprintf;
/**
* @internal
*
* @psalm-immutable
*/
final class NonStreamResourceUsedAsLargeObject extends AbstractException
{
public static function new(int $parameter): self
{
return new self(
sprintf('The resource passed as a LARGE_OBJECT parameter #%d must be of type "stream"', $parameter)
);
}
}
...@@ -6,10 +6,10 @@ use Doctrine\DBAL\Driver\Exception; ...@@ -6,10 +6,10 @@ use Doctrine\DBAL\Driver\Exception;
use Doctrine\DBAL\Driver\Exception\UnknownParameterType; use Doctrine\DBAL\Driver\Exception\UnknownParameterType;
use Doctrine\DBAL\Driver\Mysqli\Exception\ConnectionError; use Doctrine\DBAL\Driver\Mysqli\Exception\ConnectionError;
use Doctrine\DBAL\Driver\Mysqli\Exception\FailedReadingStreamOffset; use Doctrine\DBAL\Driver\Mysqli\Exception\FailedReadingStreamOffset;
use Doctrine\DBAL\Driver\Mysqli\Exception\NonStreamResourceUsedAsLargeObject;
use Doctrine\DBAL\Driver\Mysqli\Exception\StatementError; use Doctrine\DBAL\Driver\Mysqli\Exception\StatementError;
use Doctrine\DBAL\Driver\Result as ResultInterface; use Doctrine\DBAL\Driver\Result as ResultInterface;
use Doctrine\DBAL\Driver\Statement as StatementInterface; use Doctrine\DBAL\Driver\Statement as StatementInterface;
use Doctrine\DBAL\Exception\InvalidArgumentException;
use Doctrine\DBAL\ParameterType; use Doctrine\DBAL\ParameterType;
use mysqli; use mysqli;
use mysqli_stmt; use mysqli_stmt;
...@@ -160,7 +160,7 @@ final class Statement implements StatementInterface ...@@ -160,7 +160,7 @@ final class Statement implements StatementInterface
if ($types[$parameter - 1] === static::$_paramTypeMap[ParameterType::LARGE_OBJECT]) { if ($types[$parameter - 1] === static::$_paramTypeMap[ParameterType::LARGE_OBJECT]) {
if (is_resource($value)) { if (is_resource($value)) {
if (get_resource_type($value) !== 'stream') { if (get_resource_type($value) !== 'stream') {
throw new InvalidArgumentException('Resources passed with the LARGE_OBJECT parameter type must be stream resources.'); throw NonStreamResourceUsedAsLargeObject::new($parameter);
} }
$streams[$parameter] = $value; $streams[$parameter] = $value;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment