Skip to content

Commit 12d087c

Browse files
committed
Use C zpp for get_class_vars()
1 parent fdd9018 commit 12d087c

File tree

5 files changed

+21
-19
lines changed

5 files changed

+21
-19
lines changed

Zend/tests/get_class_vars_001.phpt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ class B extends A {
1919
var_dump(get_class_vars('A'));
2020
var_dump(get_class_vars('B'));
2121

22+
try {
23+
get_class_vars("Unknown");
24+
} catch (Error $e) {
25+
echo $e->getMessage(), "\n";
26+
}
27+
2228
?>
2329
--EXPECT--
2430
array(1) {
@@ -31,3 +37,4 @@ array(2) {
3137
["aa"]=>
3238
int(4)
3339
}
40+
get_class_vars(): Argument #1 ($class) must be a valid class name, Unknown given

Zend/zend_builtin_functions.c

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -747,27 +747,22 @@ static void add_class_vars(zend_class_entry *scope, zend_class_entry *ce, bool s
747747
/* {{{ Returns an array of default properties of the class. */
748748
ZEND_FUNCTION(get_class_vars)
749749
{
750-
zend_string *class_name;
751-
zend_class_entry *ce, *scope;
750+
zend_class_entry *ce = NULL, *scope;
752751

753-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &class_name) == FAILURE) {
752+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "C", &ce) == FAILURE) {
754753
RETURN_THROWS();
755754
}
756755

757-
ce = zend_lookup_class(class_name);
758-
if (!ce) {
759-
RETURN_FALSE;
760-
} else {
761-
array_init(return_value);
762-
if (UNEXPECTED(!(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED))) {
763-
if (UNEXPECTED(zend_update_class_constants(ce) != SUCCESS)) {
764-
return;
765-
}
756+
array_init(return_value);
757+
if (UNEXPECTED(!(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED))) {
758+
if (UNEXPECTED(zend_update_class_constants(ce) != SUCCESS)) {
759+
return;
766760
}
767-
scope = zend_get_executed_scope();
768-
add_class_vars(scope, ce, 0, return_value);
769-
add_class_vars(scope, ce, 1, return_value);
770761
}
762+
763+
scope = zend_get_executed_scope();
764+
add_class_vars(scope, ce, 0, return_value);
765+
add_class_vars(scope, ce, 1, return_value);
771766
}
772767
/* }}} */
773768

Zend/zend_builtin_functions.stub.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function is_subclass_of(mixed $object_or_class, string $class, bool $allow_strin
3939
/** @param object|string $object_or_class */
4040
function is_a(mixed $object_or_class, string $class, bool $allow_string = false): bool {}
4141

42-
function get_class_vars(string $class): array|false {}
42+
function get_class_vars(string $class): array {}
4343

4444
function get_object_vars(object $object): array {}
4545

Zend/zend_builtin_functions_arginfo.h

Lines changed: 2 additions & 2 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: 1f644f72600eddbbb01a4c3912a2c9c5fe12188e */
2+
* Stub hash: fed3b572fbcae7bda87efc377b56e027da12b511 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_version, 0, 0, IS_STRING, 0)
55
ZEND_END_ARG_INFO()
@@ -69,7 +69,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_a, 0, 2, _IS_BOOL, 0)
6969
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, allow_string, _IS_BOOL, 0, "false")
7070
ZEND_END_ARG_INFO()
7171

72-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_get_class_vars, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE)
72+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_class_vars, 0, 1, IS_ARRAY, 0)
7373
ZEND_ARG_TYPE_INFO(0, class, IS_STRING, 0)
7474
ZEND_END_ARG_INFO()
7575

ext/opcache/Optimizer/zend_func_info.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ static const func_info_t func_infos[] = {
9797
F1("zend_version", MAY_BE_STRING),
9898
FN("func_get_arg", UNKNOWN_INFO),
9999
FN("func_get_args", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ANY),
100-
F1("get_class_vars", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF),
100+
F1("get_class_vars", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF),
101101
F1("get_class_methods", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
102102
F1("get_included_files", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
103103
FN("set_error_handler", MAY_BE_NULL | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_OBJECT | MAY_BE_OBJECT),

0 commit comments

Comments
 (0)