summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-09-22 13:05:05 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-09-22 13:05:05 +0200
commit12d087c346592473a4e67e935a892e5f19de88b5 (patch)
tree1c7404eb9a59cceb67c7e521278e44bb16b2dd3e /Zend
parentfdd9018bdfa6a4b99279a982e7c9d490849c8ae4 (diff)
downloadphp-git-12d087c346592473a4e67e935a892e5f19de88b5.tar.gz
Use C zpp for get_class_vars()
Diffstat (limited to 'Zend')
-rw-r--r--Zend/tests/get_class_vars_001.phpt7
-rw-r--r--Zend/zend_builtin_functions.c25
-rw-r--r--Zend/zend_builtin_functions.stub.php2
-rw-r--r--Zend/zend_builtin_functions_arginfo.h4
4 files changed, 20 insertions, 18 deletions
diff --git a/Zend/tests/get_class_vars_001.phpt b/Zend/tests/get_class_vars_001.phpt
index a5939ccd5f..84f502610e 100644
--- a/Zend/tests/get_class_vars_001.phpt
+++ b/Zend/tests/get_class_vars_001.phpt
@@ -19,6 +19,12 @@ class B extends A {
var_dump(get_class_vars('A'));
var_dump(get_class_vars('B'));
+try {
+ get_class_vars("Unknown");
+} catch (Error $e) {
+ echo $e->getMessage(), "\n";
+}
+
?>
--EXPECT--
array(1) {
@@ -31,3 +37,4 @@ array(2) {
["aa"]=>
int(4)
}
+get_class_vars(): Argument #1 ($class) must be a valid class name, Unknown given
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index fbc7d13329..ac652b3b8a 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -747,27 +747,22 @@ static void add_class_vars(zend_class_entry *scope, zend_class_entry *ce, bool s
/* {{{ Returns an array of default properties of the class. */
ZEND_FUNCTION(get_class_vars)
{
- zend_string *class_name;
- zend_class_entry *ce, *scope;
+ zend_class_entry *ce = NULL, *scope;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &class_name) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "C", &ce) == FAILURE) {
RETURN_THROWS();
}
- ce = zend_lookup_class(class_name);
- if (!ce) {
- RETURN_FALSE;
- } else {
- array_init(return_value);
- if (UNEXPECTED(!(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED))) {
- if (UNEXPECTED(zend_update_class_constants(ce) != SUCCESS)) {
- return;
- }
+ array_init(return_value);
+ if (UNEXPECTED(!(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED))) {
+ if (UNEXPECTED(zend_update_class_constants(ce) != SUCCESS)) {
+ return;
}
- scope = zend_get_executed_scope();
- add_class_vars(scope, ce, 0, return_value);
- add_class_vars(scope, ce, 1, return_value);
}
+
+ scope = zend_get_executed_scope();
+ add_class_vars(scope, ce, 0, return_value);
+ add_class_vars(scope, ce, 1, return_value);
}
/* }}} */
diff --git a/Zend/zend_builtin_functions.stub.php b/Zend/zend_builtin_functions.stub.php
index 5d5ebcde14..eaf2ac490a 100644
--- a/Zend/zend_builtin_functions.stub.php
+++ b/Zend/zend_builtin_functions.stub.php
@@ -39,7 +39,7 @@ function is_subclass_of(mixed $object_or_class, string $class, bool $allow_strin
/** @param object|string $object_or_class */
function is_a(mixed $object_or_class, string $class, bool $allow_string = false): bool {}
-function get_class_vars(string $class): array|false {}
+function get_class_vars(string $class): array {}
function get_object_vars(object $object): array {}
diff --git a/Zend/zend_builtin_functions_arginfo.h b/Zend/zend_builtin_functions_arginfo.h
index 4b551e3d59..d10e2c3d68 100644
--- a/Zend/zend_builtin_functions_arginfo.h
+++ b/Zend/zend_builtin_functions_arginfo.h
@@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
- * Stub hash: 1f644f72600eddbbb01a4c3912a2c9c5fe12188e */
+ * Stub hash: fed3b572fbcae7bda87efc377b56e027da12b511 */
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_version, 0, 0, IS_STRING, 0)
ZEND_END_ARG_INFO()
@@ -69,7 +69,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_is_a, 0, 2, _IS_BOOL, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, allow_string, _IS_BOOL, 0, "false")
ZEND_END_ARG_INFO()
-ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_get_class_vars, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_get_class_vars, 0, 1, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, class, IS_STRING, 0)
ZEND_END_ARG_INFO()