mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Declare PDORow::queryString property
Relates GH-6742
This commit is contained in:
parent
1494e87bd0
commit
f15d52796e
5 changed files with 26 additions and 16 deletions
|
@ -2262,7 +2262,9 @@ static zval *row_prop_read(zend_object *object, zend_string *name, int type, voi
|
||||||
ZEND_ASSERT(stmt);
|
ZEND_ASSERT(stmt);
|
||||||
|
|
||||||
ZVAL_NULL(rv);
|
ZVAL_NULL(rv);
|
||||||
if (is_numeric_string(ZSTR_VAL(name), ZSTR_LEN(name), &lval, NULL, 0) == IS_LONG) {
|
if (zend_string_equals_literal(name, "queryString")) {
|
||||||
|
return zend_std_read_property(&stmt->std, name, type, cache_slot, rv);
|
||||||
|
} else if (is_numeric_string(ZSTR_VAL(name), ZSTR_LEN(name), &lval, NULL, 0) == IS_LONG) {
|
||||||
if (lval >= 0 && lval < stmt->column_count) {
|
if (lval >= 0 && lval < stmt->column_count) {
|
||||||
fetch_value(stmt, rv, lval, NULL);
|
fetch_value(stmt, rv, lval, NULL);
|
||||||
}
|
}
|
||||||
|
@ -2275,9 +2277,6 @@ static zval *row_prop_read(zend_object *object, zend_string *name, int type, voi
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (zend_string_equals_literal(name, "queryString")) {
|
|
||||||
return zend_std_read_property(&stmt->std, name, type, cache_slot, rv);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
|
@ -2306,6 +2305,10 @@ static zval *row_dim_read(zend_object *object, zval *member, int type, zval *rv)
|
||||||
return &EG(uninitialized_zval);
|
return &EG(uninitialized_zval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (zend_string_equals_literal(Z_STR_P(member), "queryString")) {
|
||||||
|
return zend_std_read_property(&stmt->std, Z_STR_P(member), type, NULL, rv);
|
||||||
|
}
|
||||||
|
|
||||||
/* TODO: replace this with a hash of available column names to column
|
/* TODO: replace this with a hash of available column names to column
|
||||||
* numbers */
|
* numbers */
|
||||||
for (colno = 0; colno < stmt->column_count; colno++) {
|
for (colno = 0; colno < stmt->column_count; colno++) {
|
||||||
|
@ -2314,9 +2317,6 @@ static zval *row_dim_read(zend_object *object, zval *member, int type, zval *rv)
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (zend_string_equals_literal(Z_STR_P(member), "queryString")) {
|
|
||||||
return zend_std_read_property(&stmt->std, Z_STR_P(member), type, NULL, rv);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
|
@ -2428,6 +2428,10 @@ static HashTable *row_get_properties_for(zend_object *object, zend_prop_purpose
|
||||||
}
|
}
|
||||||
props = zend_array_dup(stmt->std.properties);
|
props = zend_array_dup(stmt->std.properties);
|
||||||
for (i = 0; i < stmt->column_count; i++) {
|
for (i = 0; i < stmt->column_count; i++) {
|
||||||
|
if (zend_string_equals_literal(stmt->columns[i].name, "queryString")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
zval val;
|
zval val;
|
||||||
fetch_value(stmt, &val, i, NULL);
|
fetch_value(stmt, &val, i, NULL);
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,7 @@
|
||||||
|
|
||||||
class PDOStatement implements IteratorAggregate
|
class PDOStatement implements IteratorAggregate
|
||||||
{
|
{
|
||||||
/** @var string|null */
|
public string $queryString;
|
||||||
public $queryString;
|
|
||||||
|
|
||||||
/** @return bool */
|
/** @return bool */
|
||||||
public function bindColumn(string|int $column, mixed &$var, int $type = 0, int $maxLength = 0, mixed $driverOptions = null) {}
|
public function bindColumn(string|int $column, mixed &$var, int $type = 0, int $maxLength = 0, mixed $driverOptions = null) {}
|
||||||
|
@ -69,4 +68,5 @@ class PDOStatement implements IteratorAggregate
|
||||||
|
|
||||||
final class PDORow
|
final class PDORow
|
||||||
{
|
{
|
||||||
|
public string $queryString;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* This is a generated file, edit the .stub.php file instead.
|
/* This is a generated file, edit the .stub.php file instead.
|
||||||
* Stub hash: d25ba8b84022d6c6208dd45412772d72196c934f */
|
* Stub hash: 1b8043ec5e3e621819c85828daf9316136fef62e */
|
||||||
|
|
||||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindColumn, 0, 0, 2)
|
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindColumn, 0, 0, 2)
|
||||||
ZEND_ARG_TYPE_MASK(0, column, MAY_BE_STRING|MAY_BE_LONG, NULL)
|
ZEND_ARG_TYPE_MASK(0, column, MAY_BE_STRING|MAY_BE_LONG, NULL)
|
||||||
|
@ -144,9 +144,9 @@ static zend_class_entry *register_class_PDOStatement(zend_class_entry *class_ent
|
||||||
zend_class_implements(class_entry, 1, class_entry_IteratorAggregate);
|
zend_class_implements(class_entry, 1, class_entry_IteratorAggregate);
|
||||||
|
|
||||||
zval property_queryString_default_value;
|
zval property_queryString_default_value;
|
||||||
ZVAL_NULL(&property_queryString_default_value);
|
ZVAL_UNDEF(&property_queryString_default_value);
|
||||||
zend_string *property_queryString_name = zend_string_init("queryString", sizeof("queryString") - 1, 1);
|
zend_string *property_queryString_name = zend_string_init("queryString", sizeof("queryString") - 1, 1);
|
||||||
zend_declare_property_ex(class_entry, property_queryString_name, &property_queryString_default_value, ZEND_ACC_PUBLIC, NULL);
|
zend_declare_typed_property(class_entry, property_queryString_name, &property_queryString_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
|
||||||
zend_string_release(property_queryString_name);
|
zend_string_release(property_queryString_name);
|
||||||
|
|
||||||
return class_entry;
|
return class_entry;
|
||||||
|
@ -160,5 +160,11 @@ static zend_class_entry *register_class_PDORow(void)
|
||||||
class_entry = zend_register_internal_class_ex(&ce, NULL);
|
class_entry = zend_register_internal_class_ex(&ce, NULL);
|
||||||
class_entry->ce_flags |= ZEND_ACC_FINAL;
|
class_entry->ce_flags |= ZEND_ACC_FINAL;
|
||||||
|
|
||||||
|
zval property_queryString_default_value;
|
||||||
|
ZVAL_UNDEF(&property_queryString_default_value);
|
||||||
|
zend_string *property_queryString_name = zend_string_init("queryString", sizeof("queryString") - 1, 1);
|
||||||
|
zend_declare_typed_property(class_entry, property_queryString_name, &property_queryString_default_value, ZEND_ACC_PUBLIC, NULL, (zend_type) ZEND_TYPE_INIT_MASK(MAY_BE_STRING));
|
||||||
|
zend_string_release(property_queryString_name);
|
||||||
|
|
||||||
return class_entry;
|
return class_entry;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,9 +15,9 @@ var_dump($x);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
object(PDOStatement)#%d (1) {
|
object(PDOStatement)#%d (0) {
|
||||||
["queryString"]=>
|
["queryString"]=>
|
||||||
NULL
|
uninitialized(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
Fatal error: Uncaught PDOException: You may not create a PDORow manually in %spdo_036.php:8
|
Fatal error: Uncaught PDOException: You may not create a PDORow manually in %spdo_036.php:8
|
||||||
|
|
|
@ -45,6 +45,6 @@ object(PDOStatement)#%d (1) {
|
||||||
string(23) "select 1 as queryString"
|
string(23) "select 1 as queryString"
|
||||||
object(PDORow)#%d (1) {
|
object(PDORow)#%d (1) {
|
||||||
["queryString"]=>
|
["queryString"]=>
|
||||||
int(1)
|
string(23) "select 1 as queryString"
|
||||||
}
|
}
|
||||||
int(1)
|
string(23) "select 1 as queryString"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue