Skip to content

Commit 45c2f1f

Browse files
committed
Implement new query and exec methods in separated php7/8 classes, and fix type on options param in prepare()
1 parent d044047 commit 45c2f1f

File tree

2 files changed

+78
-7
lines changed

2 files changed

+78
-7
lines changed

src/Php7/FakePdo.php

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,52 @@
11
<?php
22
namespace Vimeo\MysqlEngine\Php7;
33

4-
class FakePdo extends \PDO implements \Vimeo\MysqlEngine\FakePdoInterface
4+
use PDO;
5+
use Vimeo\MysqlEngine\FakePdoInterface;
6+
use Vimeo\MysqlEngine\FakePdoTrait;
7+
8+
class FakePdo extends PDO implements FakePdoInterface
59
{
6-
use \Vimeo\MysqlEngine\FakePdoTrait;
10+
use FakePdoTrait;
711

812
/**
913
* @param string $statement
1014
* @param ?array $options
1115
*/
12-
public function prepare($statement, $options = null)
16+
public function prepare($statement, array $options = [])
1317
{
1418
return new FakePdoStatement($this, $statement, $this->real);
1519
}
20+
21+
/**
22+
* @param string $statement
23+
* @return int|false
24+
*/
25+
public function exec($statement)
26+
{
27+
$statement = trim($statement);
28+
if (strpos($statement, 'SET ')===0){
29+
return false;
30+
}
31+
32+
$sth = $this->prepare($statement);
33+
if ($sth->execute()){
34+
return $sth->rowCount();
35+
}
36+
return false;
37+
}
38+
39+
/**
40+
* @param string $statement
41+
* @param int $mode
42+
* @param null $arg3
43+
* @param array $ctorargs
44+
* @return FakePdoStatement
45+
*/
46+
public function query($statement, $mode = PDO::ATTR_DEFAULT_FETCH_MODE, $arg3 = null, array $ctorargs = [])
47+
{
48+
$sth = $this->prepare($statement);
49+
$sth->execute();
50+
return $sth;
51+
}
1652
}

src/Php8/FakePdo.php

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,51 @@
11
<?php
22
namespace Vimeo\MysqlEngine\Php8;
33

4-
class FakePdo extends \PDO implements \Vimeo\MysqlEngine\FakePdoInterface
4+
use PDO;
5+
use Vimeo\MysqlEngine\FakePdoInterface;
6+
use Vimeo\MysqlEngine\FakePdoTrait;
7+
8+
class FakePdo extends \PDO implements FakePdoInterface
59
{
6-
use \Vimeo\MysqlEngine\FakePdoTrait;
10+
use FakePdoTrait;
711

812
/**
913
* @param string $statement
10-
* @param ?array $options
14+
* @param array $options
1115
*/
12-
public function prepare($statement, $options = null)
16+
public function prepare($statement, array $options = [])
1317
{
1418
return new FakePdoStatement($this, $statement, $this->real);
1519
}
20+
21+
/**
22+
* @param string $statement
23+
* @return int|false
24+
*/
25+
public function exec($statement)
26+
{
27+
$statement = trim($statement);
28+
if (str_starts_with($statement, 'SET ')){
29+
return false;
30+
}
31+
32+
$sth = $this->prepare($statement);
33+
if ($sth->execute()){
34+
return $sth->rowCount();
35+
}
36+
return false;
37+
}
38+
39+
/**
40+
* @param string $statement
41+
* @param int|null $mode
42+
* @param mixed ...$fetchModeArgs
43+
* @return FakePdoStatement
44+
*/
45+
public function query(string $statement, ?int $mode = PDO::ATTR_DEFAULT_FETCH_MODE, mixed ...$fetchModeArgs)
46+
{
47+
$sth = $this->prepare($statement);
48+
$sth->execute();
49+
return $sth;
50+
}
1651
}

0 commit comments

Comments
 (0)