Skip to content

Commit 4ed66ff

Browse files
committed
Declare tentative return types for ext/pdo
Closes GH-6996
1 parent 1b35056 commit 4ed66ff

15 files changed

+152
-141
lines changed

ext/pdo/pdo_dbh.stub.php

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,48 +6,48 @@ class PDO
66
{
77
public function __construct(string $dsn, ?string $username = null, ?string $password = null, ?array $options = null) {}
88

9-
/** @return bool */
10-
public function beginTransaction() {}
9+
/** @tentative-return-type */
10+
public function beginTransaction(): bool {}
1111

12-
/** @return bool */
13-
public function commit() {}
12+
/** @tentative-return-type */
13+
public function commit(): bool {}
1414

15-
/** @return string|null */
16-
public function errorCode() {}
15+
/** @tentative-return-type */
16+
public function errorCode(): ?string {}
1717

18-
/** @return array */
19-
public function errorInfo() {}
18+
/** @tentative-return-type */
19+
public function errorInfo(): array {}
2020

21-
/** @return int|false */
22-
public function exec(string $statement) {}
21+
/** @tentative-return-type */
22+
public function exec(string $statement): int|false {}
2323

24-
/** @return bool|int|string|array|null */
25-
public function getAttribute(int $attribute) {}
24+
/** @tentative-return-type */
25+
public function getAttribute(int $attribute): mixed {}
2626

27-
/** @return array */
28-
public static function getAvailableDrivers() {}
27+
/** @tentative-return-type */
28+
public static function getAvailableDrivers(): array {}
2929

30-
/** @return bool */
31-
public function inTransaction() {}
30+
/** @tentative-return-type */
31+
public function inTransaction(): bool {}
3232

33-
/** @return string|false */
34-
public function lastInsertId(?string $name = null) {}
33+
/** @tentative-return-type */
34+
public function lastInsertId(?string $name = null): string|false {}
3535

36-
/** @return PDOStatement|false */
37-
public function prepare(string $query, array $options = []) {}
36+
/** @tentative-return-type */
37+
public function prepare(string $query, array $options = []): PDOStatement|false {}
3838

39-
/** @return PDOStatement|false */
40-
public function query(string $query, ?int $fetchMode = null, mixed ...$fetchModeArgs) {}
39+
/** @tentative-return-type */
40+
public function query(string $query, ?int $fetchMode = null, mixed ...$fetchModeArgs): PDOStatement|false {}
4141

42-
/** @return string|false */
43-
public function quote(string $string, int $type = PDO::PARAM_STR) {}
42+
/** @tentative-return-type */
43+
public function quote(string $string, int $type = PDO::PARAM_STR): string|false {}
4444

45-
/** @return bool */
46-
public function rollBack() {}
45+
/** @tentative-return-type */
46+
public function rollBack(): bool {}
4747

4848
/**
4949
* @param array|int $value
50-
* @return bool
50+
* @tentative-return-type
5151
*/
52-
public function setAttribute(int $attribute, $value) {}
52+
public function setAttribute(int $attribute, $value): bool {}
5353
}

ext/pdo/pdo_dbh_arginfo.h

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 779192c91fd281db6d2dc04143dd8656148ed789 */
2+
* Stub hash: c0f18da92bca9f57b18e58fbc96e47b4195519a2 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO___construct, 0, 0, 1)
55
ZEND_ARG_TYPE_INFO(0, dsn, IS_STRING, 0)
@@ -8,50 +8,52 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO___construct, 0, 0, 1)
88
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 1, "null")
99
ZEND_END_ARG_INFO()
1010

11-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_beginTransaction, 0, 0, 0)
11+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDO_beginTransaction, 0, 0, _IS_BOOL, 0)
1212
ZEND_END_ARG_INFO()
1313

1414
#define arginfo_class_PDO_commit arginfo_class_PDO_beginTransaction
1515

16-
#define arginfo_class_PDO_errorCode arginfo_class_PDO_beginTransaction
16+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDO_errorCode, 0, 0, IS_STRING, 1)
17+
ZEND_END_ARG_INFO()
1718

18-
#define arginfo_class_PDO_errorInfo arginfo_class_PDO_beginTransaction
19+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDO_errorInfo, 0, 0, IS_ARRAY, 0)
20+
ZEND_END_ARG_INFO()
1921

20-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_exec, 0, 0, 1)
22+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_PDO_exec, 0, 1, MAY_BE_LONG|MAY_BE_FALSE)
2123
ZEND_ARG_TYPE_INFO(0, statement, IS_STRING, 0)
2224
ZEND_END_ARG_INFO()
2325

24-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_getAttribute, 0, 0, 1)
26+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDO_getAttribute, 0, 1, IS_MIXED, 0)
2527
ZEND_ARG_TYPE_INFO(0, attribute, IS_LONG, 0)
2628
ZEND_END_ARG_INFO()
2729

28-
#define arginfo_class_PDO_getAvailableDrivers arginfo_class_PDO_beginTransaction
30+
#define arginfo_class_PDO_getAvailableDrivers arginfo_class_PDO_errorInfo
2931

3032
#define arginfo_class_PDO_inTransaction arginfo_class_PDO_beginTransaction
3133

32-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_lastInsertId, 0, 0, 0)
34+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_PDO_lastInsertId, 0, 0, MAY_BE_STRING|MAY_BE_FALSE)
3335
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, name, IS_STRING, 1, "null")
3436
ZEND_END_ARG_INFO()
3537

36-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_prepare, 0, 0, 1)
38+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_PDO_prepare, 0, 1, PDOStatement, MAY_BE_FALSE)
3739
ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
3840
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "[]")
3941
ZEND_END_ARG_INFO()
4042

41-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_query, 0, 0, 1)
43+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_PDO_query, 0, 1, PDOStatement, MAY_BE_FALSE)
4244
ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
4345
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, fetchMode, IS_LONG, 1, "null")
4446
ZEND_ARG_VARIADIC_TYPE_INFO(0, fetchModeArgs, IS_MIXED, 0)
4547
ZEND_END_ARG_INFO()
4648

47-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_quote, 0, 0, 1)
49+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_PDO_quote, 0, 1, MAY_BE_STRING|MAY_BE_FALSE)
4850
ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
4951
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "PDO::PARAM_STR")
5052
ZEND_END_ARG_INFO()
5153

5254
#define arginfo_class_PDO_rollBack arginfo_class_PDO_beginTransaction
5355

54-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_setAttribute, 0, 0, 2)
56+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDO_setAttribute, 0, 2, _IS_BOOL, 0)
5557
ZEND_ARG_TYPE_INFO(0, attribute, IS_LONG, 0)
5658
ZEND_ARG_INFO(0, value)
5759
ZEND_END_ARG_INFO()

ext/pdo/pdo_stmt.stub.php

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,62 +6,63 @@ class PDOStatement implements IteratorAggregate
66
{
77
public string $queryString;
88

9-
/** @return bool */
10-
public function bindColumn(string|int $column, mixed &$var, int $type = PDO::PARAM_STR, int $maxLength = 0, mixed $driverOptions = null) {}
9+
/** @tentative-return-type */
10+
public function bindColumn(string|int $column, mixed &$var, int $type = PDO::PARAM_STR, int $maxLength = 0, mixed $driverOptions = null): bool {}
1111

12-
/** @return bool */
13-
public function bindParam(string|int $param, mixed &$var, int $type = PDO::PARAM_STR, int $maxLength = 0, mixed $driverOptions = null) {}
12+
/** @tentative-return-type */
13+
public function bindParam(string|int $param, mixed &$var, int $type = PDO::PARAM_STR, int $maxLength = 0, mixed $driverOptions = null): bool {}
1414

15-
/** @return bool */
16-
public function bindValue(string|int $param, mixed $value, int $type = PDO::PARAM_STR) {}
15+
/** @tentative-return-type */
16+
public function bindValue(string|int $param, mixed $value, int $type = PDO::PARAM_STR): bool {}
1717

18-
/** @return bool */
19-
public function closeCursor() {}
18+
/** @tentative-return-type */
19+
public function closeCursor(): bool {}
2020

21-
/** @return int */
22-
public function columnCount() {}
21+
/** @tentative-return-type */
22+
public function columnCount(): int {}
2323

24-
/** @return bool|null */
25-
public function debugDumpParams() {}
24+
/** @tentative-return-type */
25+
public function debugDumpParams(): ?bool {}
2626

27-
/** @return string|null */
28-
public function errorCode() {}
27+
/** @tentative-return-type */
28+
public function errorCode(): ?string {}
2929

3030
/** @return array */
31-
public function errorInfo() {}
31+
/** @tentative-return-type */
32+
public function errorInfo(): array {}
3233

33-
/** @return bool */
34-
public function execute(?array $params = null) {}
34+
/** @tentative-return-type */
35+
public function execute(?array $params = null): bool {}
3536

36-
/** @return mixed */
37-
public function fetch(int $mode = PDO::FETCH_DEFAULT, int $cursorOrientation = PDO::FETCH_ORI_NEXT, int $cursorOffset = 0) {}
37+
/** @tentative-return-type */
38+
public function fetch(int $mode = PDO::FETCH_DEFAULT, int $cursorOrientation = PDO::FETCH_ORI_NEXT, int $cursorOffset = 0): mixed {}
3839

39-
/** @return array */
40-
public function fetchAll(int $mode = PDO::FETCH_DEFAULT, mixed ...$args) {}
40+
/** @tentative-return-type */
41+
public function fetchAll(int $mode = PDO::FETCH_DEFAULT, mixed ...$args): array {}
4142

42-
/** @return mixed */
43-
public function fetchColumn(int $column = 0) {}
43+
/** @tentative-return-type */
44+
public function fetchColumn(int $column = 0): mixed {}
4445

45-
/** @return object|false */
46-
public function fetchObject(?string $class = "stdClass", array $constructorArgs = []) {}
46+
/** @tentative-return-type */
47+
public function fetchObject(?string $class = "stdClass", array $constructorArgs = []): object|false {}
4748

48-
/** @return mixed */
49-
public function getAttribute(int $name) {}
49+
/** @tentative-return-type */
50+
public function getAttribute(int $name): mixed {}
5051

51-
/** @return array|false */
52-
public function getColumnMeta(int $column) {}
52+
/** @tentative-return-type */
53+
public function getColumnMeta(int $column): array|false {}
5354

54-
/** @return bool */
55-
public function nextRowset() {}
55+
/** @tentative-return-type */
56+
public function nextRowset(): bool {}
5657

57-
/** @return int */
58-
public function rowCount() {}
58+
/** @tentative-return-type */
59+
public function rowCount(): int {}
5960

60-
/** @return bool */
61-
public function setAttribute(int $attribute, mixed $value) {}
61+
/** @tentative-return-type */
62+
public function setAttribute(int $attribute, mixed $value): bool {}
6263

6364
/** @return bool */
64-
public function setFetchMode(int $mode, mixed ...$args) {}
65+
public function setFetchMode(int $mode, mixed ...$args) {} // TODO make return type void
6566

6667
public function getIterator(): Iterator {}
6768
}

ext/pdo/pdo_stmt_arginfo.h

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,80 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 95416f12e78609bbb9ed2e70835180654f8e78c8 */
2+
* Stub hash: 406aff009e4091eaac0937aaf0801c934a0f3f71 */
33

4-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindColumn, 0, 0, 2)
4+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_bindColumn, 0, 2, _IS_BOOL, 0)
55
ZEND_ARG_TYPE_MASK(0, column, MAY_BE_STRING|MAY_BE_LONG, NULL)
66
ZEND_ARG_TYPE_INFO(1, var, IS_MIXED, 0)
77
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "PDO::PARAM_STR")
88
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, maxLength, IS_LONG, 0, "0")
99
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, driverOptions, IS_MIXED, 0, "null")
1010
ZEND_END_ARG_INFO()
1111

12-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindParam, 0, 0, 2)
12+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_bindParam, 0, 2, _IS_BOOL, 0)
1313
ZEND_ARG_TYPE_MASK(0, param, MAY_BE_STRING|MAY_BE_LONG, NULL)
1414
ZEND_ARG_TYPE_INFO(1, var, IS_MIXED, 0)
1515
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "PDO::PARAM_STR")
1616
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, maxLength, IS_LONG, 0, "0")
1717
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, driverOptions, IS_MIXED, 0, "null")
1818
ZEND_END_ARG_INFO()
1919

20-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindValue, 0, 0, 2)
20+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_bindValue, 0, 2, _IS_BOOL, 0)
2121
ZEND_ARG_TYPE_MASK(0, param, MAY_BE_STRING|MAY_BE_LONG, NULL)
2222
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
2323
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "PDO::PARAM_STR")
2424
ZEND_END_ARG_INFO()
2525

26-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_closeCursor, 0, 0, 0)
26+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_closeCursor, 0, 0, _IS_BOOL, 0)
2727
ZEND_END_ARG_INFO()
2828

29-
#define arginfo_class_PDOStatement_columnCount arginfo_class_PDOStatement_closeCursor
29+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_columnCount, 0, 0, IS_LONG, 0)
30+
ZEND_END_ARG_INFO()
3031

31-
#define arginfo_class_PDOStatement_debugDumpParams arginfo_class_PDOStatement_closeCursor
32+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_debugDumpParams, 0, 0, _IS_BOOL, 1)
33+
ZEND_END_ARG_INFO()
3234

33-
#define arginfo_class_PDOStatement_errorCode arginfo_class_PDOStatement_closeCursor
35+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_errorCode, 0, 0, IS_STRING, 1)
36+
ZEND_END_ARG_INFO()
3437

35-
#define arginfo_class_PDOStatement_errorInfo arginfo_class_PDOStatement_closeCursor
38+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_errorInfo, 0, 0, IS_ARRAY, 0)
39+
ZEND_END_ARG_INFO()
3640

37-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_execute, 0, 0, 0)
41+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_execute, 0, 0, _IS_BOOL, 0)
3842
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, params, IS_ARRAY, 1, "null")
3943
ZEND_END_ARG_INFO()
4044

41-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_fetch, 0, 0, 0)
45+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_fetch, 0, 0, IS_MIXED, 0)
4246
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "PDO::FETCH_DEFAULT")
4347
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, cursorOrientation, IS_LONG, 0, "PDO::FETCH_ORI_NEXT")
4448
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, cursorOffset, IS_LONG, 0, "0")
4549
ZEND_END_ARG_INFO()
4650

47-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_fetchAll, 0, 0, 0)
51+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_fetchAll, 0, 0, IS_ARRAY, 0)
4852
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "PDO::FETCH_DEFAULT")
4953
ZEND_ARG_VARIADIC_TYPE_INFO(0, args, IS_MIXED, 0)
5054
ZEND_END_ARG_INFO()
5155

52-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_fetchColumn, 0, 0, 0)
56+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_fetchColumn, 0, 0, IS_MIXED, 0)
5357
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, column, IS_LONG, 0, "0")
5458
ZEND_END_ARG_INFO()
5559

56-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_fetchObject, 0, 0, 0)
60+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_PDOStatement_fetchObject, 0, 0, MAY_BE_OBJECT|MAY_BE_FALSE)
5761
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, class, IS_STRING, 1, "\"stdClass\"")
5862
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, constructorArgs, IS_ARRAY, 0, "[]")
5963
ZEND_END_ARG_INFO()
6064

61-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_getAttribute, 0, 0, 1)
65+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_getAttribute, 0, 1, IS_MIXED, 0)
6266
ZEND_ARG_TYPE_INFO(0, name, IS_LONG, 0)
6367
ZEND_END_ARG_INFO()
6468

65-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_getColumnMeta, 0, 0, 1)
69+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_PDOStatement_getColumnMeta, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE)
6670
ZEND_ARG_TYPE_INFO(0, column, IS_LONG, 0)
6771
ZEND_END_ARG_INFO()
6872

6973
#define arginfo_class_PDOStatement_nextRowset arginfo_class_PDOStatement_closeCursor
7074

71-
#define arginfo_class_PDOStatement_rowCount arginfo_class_PDOStatement_closeCursor
75+
#define arginfo_class_PDOStatement_rowCount arginfo_class_PDOStatement_columnCount
7276

73-
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_setAttribute, 0, 0, 2)
77+
ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDOStatement_setAttribute, 0, 2, _IS_BOOL, 0)
7478
ZEND_ARG_TYPE_INFO(0, attribute, IS_LONG, 0)
7579
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
7680
ZEND_END_ARG_INFO()

ext/pdo/tests/bug_47769.phpt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ class test extends PDO
1717
echo "this is a private method.\n";
1818
}
1919

20-
public function quote($str, $paramtype = NULL) {
20+
public function quote($str, $paramtype = NULL): string|false {
2121
$this->isProtected();
2222
$this->isPrivate();
2323
print $str ."\n";
24+
25+
return $str;
2426
}
2527
}
2628

ext/pdo/tests/pdo_023.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class PDODatabaseX extends PDO
4747
$this->test2 = 22;
4848
}
4949

50-
function query($sql, ...$rest)
50+
function query($sql, ...$rest): PDOStatement|false
5151
{
5252
echo __METHOD__ . "()\n";
5353
$stmt = parent::prepare($sql, array(PDO::ATTR_STATEMENT_CLASS=>array('PDOStatementx')));

ext/pdo/tests/pdo_026.phpt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class PDODatabase extends PDO
4242
echo __METHOD__ . "()\n";
4343
}
4444

45-
function query($sql, ...$rest)
45+
function query($sql, ...$rest): PDOStatement|false
4646
{
4747
echo __METHOD__ . "()\n";
4848
$stmt = $this->prepare($sql, array(PDO::ATTR_STATEMENT_CLASS=>array('PDOStatementx', array($this))));

0 commit comments

Comments
 (0)