Commit ee908f5542e for php.net
commit ee908f5542e3eeb2843440cf757a7e95a7ff1c83
Author: Gina Peter Banyard <girgias@php.net>
Date: Fri Aug 21 13:31:45 2026 +0100
Zend: normalise behaviour around class name ZPP specifier (#23359)
Splitting the behavioural change of #23052 out into this and come up with something that is hopefully more sensible and consistent between fast and slow ZPP and the object or class_name Fast ZPP specifier.
diff --git a/Zend/tests/bug70914.phpt b/Zend/tests/bug70914.phpt
deleted file mode 100644
index 73a43a5600d..00000000000
--- a/Zend/tests/bug70914.phpt
+++ /dev/null
@@ -1,17 +0,0 @@
---TEST--
-Bug #70914 zend_throw_or_error() format string vulnerability
---EXTENSIONS--
-pdo_sqlite
---FILE--
-<?php
-
-$db = new PDO('sqlite::memory:');
-$st = $db->query('SELECT 1');
-try {
- $re = $st->fetchObject('%Z');
-} catch (TypeError $e) {
- echo $e->getMessage(), "\n";
-}
-?>
---EXPECT--
-PDOStatement::fetchObject(): Argument #1 ($class) must be a valid class name, %Z given
diff --git a/Zend/tests/get_class_vars/get_class_vars_001.phpt b/Zend/tests/get_class_vars/get_class_vars_001.phpt
index 84f502610ec..a884409121c 100644
--- a/Zend/tests/get_class_vars/get_class_vars_001.phpt
+++ b/Zend/tests/get_class_vars/get_class_vars_001.phpt
@@ -37,4 +37,4 @@ class B extends A {
["aa"]=>
int(4)
}
-get_class_vars(): Argument #1 ($class) must be a valid class name, Unknown given
+get_class_vars(): Argument #1 ($class) must be a valid class name, "Unknown" given
diff --git a/Zend/tests/get_parent_class_basic.phpt b/Zend/tests/get_parent_class_basic.phpt
index b439fbf9fb3..8eabd64ca45 100644
--- a/Zend/tests/get_parent_class_basic.phpt
+++ b/Zend/tests/get_parent_class_basic.phpt
@@ -90,9 +90,9 @@ function test_bar() {
string(3) "foo"
bool(false)
bool(false)
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
+get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, "" given
+get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, "[[[[" given
+get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, " " given
bool(false)
get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, int given
diff --git a/Zend/tests/zpp/bug70914.phpt b/Zend/tests/zpp/bug70914.phpt
new file mode 100644
index 00000000000..f7f37b3b6ea
--- /dev/null
+++ b/Zend/tests/zpp/bug70914.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Bug #70914 zend_throw_or_error() format string vulnerability
+--EXTENSIONS--
+zend_test
+--FILE--
+<?php
+
+try {
+ var_dump(zend_class_name('%Z'));
+} catch (TypeError $e) {
+ echo $e::class, ': ', $e->getMessage(), "\n";
+}
+?>
+--EXPECT--
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "%Z" given
diff --git a/Zend/tests/zpp/class-string_zpp_specifier_strict_mode.phpt b/Zend/tests/zpp/class-string_zpp_specifier_strict_mode.phpt
index bdc48e27d4a..ffb9788f1cb 100644
--- a/Zend/tests/zpp/class-string_zpp_specifier_strict_mode.phpt
+++ b/Zend/tests/zpp/class-string_zpp_specifier_strict_mode.phpt
@@ -57,77 +57,77 @@
?>
--EXPECTF--
Using null:
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, null given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, null given
NULL
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, null given
NULL
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, null given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, null given
NULL
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, null given
NULL
Using false:
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, false given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, false given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, given
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, false given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, false given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, false given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, false given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, false given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, false given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, false given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, false given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, false given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, false given
Using true:
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, true given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, true given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 1 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 1 given
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, true given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, true given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 1 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 1 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, true given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, true given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, true given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, true given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, true given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, true given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, true given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, true given
Using 42:
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, int given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, int given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 42 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 42 given
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, int given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, int given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 42 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 42 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, int given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, int given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, int given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, int given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, int given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, int given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, int given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, int given
Using 73.5:
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, float given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, float given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 73.5 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 73.5 given
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, float given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, float given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 73.5 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 73.5 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, float given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, float given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, float given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, float given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, float given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, float given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, float given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, float given
Using 'string':
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, string given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, string given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "string" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "string" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "string" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "string" given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "string" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "string" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "string" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "string" given
Using '15':
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 15 given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 15 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "15" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "15" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "15" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "15" given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "15" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "15" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "15" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "15" given
Using '56.7':
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 56.7 given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 56.7 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "56.7" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "56.7" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "56.7" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "56.7" given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "56.7" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "56.7" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "56.7" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "56.7" given
Using 'stdClass':
string(8) "stdClass"
string(8) "stdClass"
@@ -147,46 +147,38 @@
string(%d) "class@anonymous%s"
string(%d) "class@anonymous%s"
Using []:
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, array given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, array given
-
-Warning: Array to string conversion in %s on line %d
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, Array given
-
-Warning: Array to string conversion in %s on line %d
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, Array given
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, array given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, array given
-
-Warning: Array to string conversion in %s on line %d
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, Array given
-
-Warning: Array to string conversion in %s on line %d
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, Array given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, array given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, array given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, array given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, array given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, array given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, array given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, array given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, array given
Using new stdClass():
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, stdClass given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, stdClass given
-Error: Object of class stdClass could not be converted to string
-Error: Object of class stdClass could not be converted to string
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, stdClass given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, stdClass given
-Error: Object of class stdClass could not be converted to string
-Error: Object of class stdClass could not be converted to string
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, stdClass given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, stdClass given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, stdClass given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, stdClass given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, stdClass given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, stdClass given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, stdClass given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, stdClass given
Using new S():
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, S given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, S given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, S class given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, S class given
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, S given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, S given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, S class given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, S class given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, S given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, S given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, S given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, S given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, S given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, S given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, S given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, S given
Using STDOUT:
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, resource given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, resource given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, Resource id #2 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, Resource id #2 given
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, resource given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, resource given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, Resource id #2 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, Resource id #2 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, resource given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, resource given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, resource given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, resource given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, resource given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, resource given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, resource given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, resource given
diff --git a/Zend/tests/zpp/class-string_zpp_specifier_weak_mode.phpt b/Zend/tests/zpp/class-string_zpp_specifier_weak_mode.phpt
index 9341ecbb410..6dd0a5b046b 100644
--- a/Zend/tests/zpp/class-string_zpp_specifier_weak_mode.phpt
+++ b/Zend/tests/zpp/class-string_zpp_specifier_weak_mode.phpt
@@ -55,81 +55,77 @@
?>
--EXPECTF--
Using null:
-
-Deprecated: zend_class_name(): Passing null to parameter #1 ($param) of type string is deprecated in %s on line %d
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, null given
NULL
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, null given
NULL
-
-Deprecated: zend_class_name(): Passing null to parameter #1 ($param) of type string is deprecated in %s on line %d
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, null given
NULL
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, null given
NULL
Using false:
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, false given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, false given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, false given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, false given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, false given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, false given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, false given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, false given
Using true:
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 1 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 1 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 1 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 1 given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 1 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 1 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 1 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 1 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, true given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, true given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, true given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, true given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, true given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, true given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, true given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, true given
Using 42:
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 42 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 42 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 42 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 42 given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 42 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 42 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 42 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 42 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, int given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, int given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, int given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, int given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, int given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, int given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, int given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, int given
Using 73.5:
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 73.5 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 73.5 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 73.5 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 73.5 given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 73.5 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 73.5 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 73.5 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 73.5 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, float given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, float given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, float given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, float given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, float given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, float given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, float given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, float given
Using 'string':
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, string given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, string given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, string given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "string" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "string" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "string" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "string" given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "string" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "string" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "string" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "string" given
Using '15':
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 15 given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 15 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 15 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "15" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "15" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "15" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "15" given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "15" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "15" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "15" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "15" given
Using '56.7':
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 56.7 given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, 56.7 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, 56.7 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "56.7" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "56.7" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "56.7" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "56.7" given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "56.7" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "56.7" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "56.7" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "56.7" given
Using 'stdClass':
string(8) "stdClass"
string(8) "stdClass"
@@ -149,46 +145,38 @@
string(%d) "class@anonymous%s"
string(%d) "class@anonymous%s"
Using []:
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, array given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, array given
-
-Warning: Array to string conversion in %s on line %d
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, Array given
-
-Warning: Array to string conversion in %s on line %d
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, Array given
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, array given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, array given
-
-Warning: Array to string conversion in %s on line %d
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, Array given
-
-Warning: Array to string conversion in %s on line %d
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, Array given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, array given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, array given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, array given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, array given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, array given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, array given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, array given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, array given
Using new stdClass():
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, stdClass given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, stdClass given
-Error: Object of class stdClass could not be converted to string
-Error: Object of class stdClass could not be converted to string
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, stdClass given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, stdClass given
-Error: Object of class stdClass could not be converted to string
-Error: Object of class stdClass could not be converted to string
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, stdClass given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, stdClass given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, stdClass given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, stdClass given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, stdClass given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, stdClass given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, stdClass given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, stdClass given
Using new S():
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, S class given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, S class given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, S class given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, S class given
-TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, S class given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name, S class given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, S class given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, S class given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "S class" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "S class" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "S class" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "S class" given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, "S class" given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, "S class" given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, "S class" given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, "S class" given
Using STDOUT:
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, resource given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, resource given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, Resource id #2 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, Resource id #2 given
-TypeError: zend_class_name(): Argument #1 ($param) must be of type string, resource given
-TypeError: zend_class_name_or_null(): Argument #1 ($param) must be of type ?string, resource given
-TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, Resource id #2 given
-TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, Resource id #2 given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, resource given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, resource given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, resource given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, resource given
+TypeError: zend_class_name(): Argument #1 ($param) must be a valid class name, resource given
+TypeError: zend_class_name_or_null(): Argument #1 ($param) must be a valid class name or null, resource given
+TypeError: zend_class_name_slow_zpp(): Argument #1 ($param) must be a valid class name, resource given
+TypeError: zend_class_name_or_null_slow_zpp(): Argument #1 ($param) must be a valid class name or null, resource given
diff --git a/Zend/tests/zpp/obj_or_class_name_zpp_strict_mode.phpt b/Zend/tests/zpp/obj_or_class_name_zpp_strict_mode.phpt
index 9bdfd66ae4e..7d2cac55e3b 100644
--- a/Zend/tests/zpp/obj_or_class_name_zpp_strict_mode.phpt
+++ b/Zend/tests/zpp/obj_or_class_name_zpp_strict_mode.phpt
@@ -41,14 +41,14 @@
TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, float given
TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, float given
Using 'string':
-TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, string given
-TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, string given
+TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, "string" given
+TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, "string" given
Using '15':
-TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, string given
-TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, string given
+TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, "15" given
+TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, "15" given
Using '56.7':
-TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, string given
-TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, string given
+TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, "56.7" given
+TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, "56.7" given
Using 'stdClass':
string(8) "stdClass"
string(8) "stdClass"
diff --git a/Zend/tests/zpp/obj_or_class_name_zpp_weak_mode.phpt b/Zend/tests/zpp/obj_or_class_name_zpp_weak_mode.phpt
index c14250a14f9..cafe821364e 100644
--- a/Zend/tests/zpp/obj_or_class_name_zpp_weak_mode.phpt
+++ b/Zend/tests/zpp/obj_or_class_name_zpp_weak_mode.phpt
@@ -39,14 +39,14 @@
TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, float given
TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, float given
Using 'string':
-TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, string given
-TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, string given
+TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, "string" given
+TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, "string" given
Using '15':
-TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, string given
-TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, string given
+TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, "15" given
+TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, "15" given
Using '56.7':
-TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, string given
-TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, string given
+TypeError: zend_obj_or_class_name(): Argument #1 ($param) must be an object or a valid class name, "56.7" given
+TypeError: zend_obj_or_class_name_or_null(): Argument #1 ($param) must be an object, a valid class name, or null, "56.7" given
Using 'stdClass':
string(8) "stdClass"
string(8) "stdClass"
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index b5bea957106..e36ca8d1cfe 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -284,6 +284,16 @@ ZEND_API ZEND_COLD void ZEND_FASTCALL zend_wrong_parameter_type_error(uint32_t n
return;
}
+ if (Z_TYPE_P(arg) == IS_STRING && (
+ expected_type == Z_EXPECTED_CLASS_NAME ||
+ expected_type == Z_EXPECTED_CLASS_NAME_OR_NULL ||
+ expected_type == Z_EXPECTED_OBJECT_OR_CLASS_NAME ||
+ expected_type == Z_EXPECTED_OBJECT_OR_CLASS_NAME_OR_NULL
+ )) {
+ zend_argument_type_error(num, "must be %s, \"%s\" given", expected_error[expected_type], Z_STRVAL_P(arg));
+ return;
+ }
+
zend_argument_type_error(num, "must be %s, %s given", expected_error[expected_type], zend_zval_value_name(arg));
}
/* }}} */
@@ -492,23 +502,28 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_class(zval *arg, zend_class_entry **p
*pce = NULL;
return 1;
}
- zend_string *class_name;
- if (!zend_parse_arg_str(arg, &class_name, check_null, num)) {
- *pce = NULL;
- zend_wrong_parameter_error(ZPP_ERROR_WRONG_ARG, num, NULL, check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING, arg);
- return 0;
+ /* Only accept string and Stringable(?) as int/foat/bool are not valid class names */
+ if (UNEXPECTED(Z_TYPE_P(arg) != IS_STRING)) {
+ if (Z_TYPE_P(arg) != IS_OBJECT || !zend_parse_arg_str_slow(arg, num)) {
+ *pce = NULL;
+ zend_wrong_parameter_type_error(num, check_null ? Z_EXPECTED_CLASS_NAME_OR_NULL : Z_EXPECTED_CLASS_NAME, arg);
+ return 0;
+ }
+ /* Object was converted to string */
+ ZEND_ASSERT(Z_TYPE_P(arg) == IS_STRING);
}
+ zend_string *class_name = Z_STR_P(arg);
*pce = zend_lookup_class(class_name);
if (ce_base) {
if ((!*pce || !instanceof_function(*pce, ce_base))) {
- zend_argument_type_error(num, "must be a class name derived from %s, %s given", ZSTR_VAL(ce_base->name), ZSTR_VAL(class_name));
+ zend_argument_type_error(num, "must be a class name derived from %s, \"%s\" given", ZSTR_VAL(ce_base->name), ZSTR_VAL(class_name));
*pce = NULL;
return 0;
}
}
if (!*pce) {
- zend_argument_type_error(num, "must be a valid class name, %s given", ZSTR_VAL(class_name));
+ zend_wrong_parameter_type_error(num, check_null ? Z_EXPECTED_CLASS_NAME_OR_NULL : Z_EXPECTED_CLASS_NAME, arg);
return 0;
}
return 1;
@@ -1020,33 +1035,42 @@ static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec
case 'C':
{
- zend_class_entry *lookup, **pce = va_arg(*va, zend_class_entry **);
- zend_class_entry *ce_base = *pce;
+ zend_class_entry **pce = va_arg(*va, zend_class_entry **);
+ const zend_class_entry *ce_base = *pce;
if (check_null && Z_TYPE_P(arg) == IS_NULL) {
*pce = NULL;
break;
}
- if (!try_convert_to_string(arg)) {
- *pce = NULL;
- return ""; /* try_convert_to_string() throws an exception */
- }
- if ((lookup = zend_lookup_class(Z_STR_P(arg))) == NULL) {
- *pce = NULL;
- } else {
- *pce = lookup;
+ /* Only accept string and Stringable(?) as int/foat/bool are not valid class names */
+ if (UNEXPECTED(Z_TYPE_P(arg) != IS_STRING)) {
+ if (Z_TYPE_P(arg) != IS_OBJECT || !zend_parse_arg_str_slow(arg, arg_num)) {
+ *pce = NULL;
+ /* __toString may throw */
+ if (!EG(exception)) {
+ zend_spprintf(error, 0, "must be a valid class name%s, %s given",
+ check_null ? " or null" : "", zend_zval_value_name(arg));
+ }
+ *pce = NULL;
+ return "";
+ }
+ /* Object was converted to string */
+ ZEND_ASSERT(Z_TYPE_P(arg) == IS_STRING);
}
+ zend_string *class_name = Z_STR_P(arg);
+
+ *pce = zend_lookup_class(class_name);
if (ce_base) {
if ((!*pce || !instanceof_function(*pce, ce_base))) {
- zend_spprintf(error, 0, "must be a class name derived from %s%s, %s given",
+ zend_spprintf(error, 0, "must be a class name derived from %s%s, \"%s\" given",
ZSTR_VAL(ce_base->name), check_null ? " or null" : "", Z_STRVAL_P(arg));
*pce = NULL;
return "";
}
}
if (!*pce) {
- zend_spprintf(error, 0, "must be a valid class name%s, %s given",
+ zend_spprintf(error, 0, "must be a valid class name%s, \"%s\" given",
check_null ? " or null" : "", Z_STRVAL_P(arg));
return "";
}
diff --git a/Zend/zend_API.h b/Zend/zend_API.h
index f52f7aecb2b..da871e1eb39 100644
--- a/Zend/zend_API.h
+++ b/Zend/zend_API.h
@@ -1569,6 +1569,8 @@ static zend_always_inline zval *zend_try_array_init(zval *zv)
_(Z_EXPECTED_ARRAY_OR_STRING_OR_NULL, "of type array|string|null") \
_(Z_EXPECTED_STRING_OR_LONG, "of type string|int") \
_(Z_EXPECTED_STRING_OR_LONG_OR_NULL, "of type string|int|null") \
+ _(Z_EXPECTED_CLASS_NAME, "a valid class name") \
+ _(Z_EXPECTED_CLASS_NAME_OR_NULL, "a valid class name or null") \
_(Z_EXPECTED_OBJECT_OR_CLASS_NAME, "an object or a valid class name") \
_(Z_EXPECTED_OBJECT_OR_CLASS_NAME_OR_NULL, "an object, a valid class name, or null") \
_(Z_EXPECTED_OBJECT_OR_STRING, "of type object|string") \
diff --git a/ext/dom/tests/modern/html/interactions/HTMLDocument_registerNodeClass_01.phpt b/ext/dom/tests/modern/html/interactions/HTMLDocument_registerNodeClass_01.phpt
index 91604c5fab8..311fbd36039 100644
--- a/ext/dom/tests/modern/html/interactions/HTMLDocument_registerNodeClass_01.phpt
+++ b/ext/dom/tests/modern/html/interactions/HTMLDocument_registerNodeClass_01.phpt
@@ -10,7 +10,7 @@
?>
--EXPECTF--
-Fatal error: Uncaught TypeError: DOMDocument::registerNodeClass(): Argument #1 ($baseClass) must be a class name derived from DOMNode, Dom\HTMLDocument given in %s:%d
+Fatal error: Uncaught TypeError: DOMDocument::registerNodeClass(): Argument #1 ($baseClass) must be a class name derived from DOMNode, "Dom\HTMLDocument" given in %s:%d
Stack trace:
#0 %s(%d): DOMDocument->registerNodeClass('Dom\\HTMLDocumen...', 'DOMDocument')
#1 {main}
diff --git a/ext/mysqli/tests/mysqli_fetch_object.phpt b/ext/mysqli/tests/mysqli_fetch_object.phpt
index 28e945db52f..8077c6ca89f 100644
--- a/ext/mysqli/tests/mysqli_fetch_object.phpt
+++ b/ext/mysqli/tests/mysqli_fetch_object.phpt
@@ -146,5 +146,5 @@ private function __construct($a, $b) {
NULL
mysqli_result object is already closed
TypeError: mysqli_fetch_object(): Argument #3 ($constructor_args) must be of type array, string given
-TypeError: mysqli_fetch_object(): Argument #2 ($class) must be a valid class name, this_class_does_not_exist given
+TypeError: mysqli_fetch_object(): Argument #2 ($class) must be a valid class name, "this_class_does_not_exist" given
done!
diff --git a/ext/mysqli/tests/mysqli_fetch_object_oo.phpt b/ext/mysqli/tests/mysqli_fetch_object_oo.phpt
index b7b2c7812a9..20dd8296d3b 100644
--- a/ext/mysqli/tests/mysqli_fetch_object_oo.phpt
+++ b/ext/mysqli/tests/mysqli_fetch_object_oo.phpt
@@ -116,12 +116,12 @@ public function __construct($a, $b) {
require_once 'clean_table.inc';
?>
--EXPECT--
-Error: Object of class mysqli could not be converted to string
+TypeError: mysqli_result::fetch_object(): Argument #1 ($class) must be a valid class name, mysqli given
ArgumentCountError: mysqli_result::fetch_object() expects at most 2 arguments, 3 given
TypeError: mysqli_result::fetch_object(): Argument #2 ($constructor_args) must be of type array, null given
ArgumentCountError: Too few arguments to function mysqli_fetch_object_construct::__construct(), 1 passed and exactly 2 expected
NULL
NULL
Error: mysqli_result object is already closed
-TypeError: mysqli_result::fetch_object(): Argument #1 ($class) must be a valid class name, this_class_does_not_exist given
+TypeError: mysqli_result::fetch_object(): Argument #1 ($class) must be a valid class name, "this_class_does_not_exist" given
done!
diff --git a/ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt b/ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt
index 0690878bac0..006e7d9306f 100644
--- a/ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt
+++ b/ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt
@@ -117,5 +117,5 @@ public function not_a_magic_one() {
["null"]=>
NULL
}
-PDOStatement::fetchObject(): Argument #1 ($class) must be a valid class name, class_does_not_exist given
+PDOStatement::fetchObject(): Argument #1 ($class) must be a valid class name or null, "class_does_not_exist" given
done!
diff --git a/ext/pgsql/tests/22pg_fetch_object.phpt b/ext/pgsql/tests/22pg_fetch_object.phpt
index 939a3adb350..d857295e583 100644
--- a/ext/pgsql/tests/22pg_fetch_object.phpt
+++ b/ext/pgsql/tests/22pg_fetch_object.phpt
@@ -53,5 +53,5 @@ function __construct($arg1, $arg2) {
["bin"]=>
NULL
}
-pg_fetch_object(): Argument #3 ($class) must be a valid class name, does_not_exist given
+pg_fetch_object(): Argument #3 ($class) must be a valid class name, "does_not_exist" given
Ok
diff --git a/ext/phar/tests/phar_oo_006.phpt b/ext/phar/tests/phar_oo_006.phpt
index 627da36d5bc..c4c99a1a283 100644
--- a/ext/phar/tests/phar_oo_006.phpt
+++ b/ext/phar/tests/phar_oo_006.phpt
@@ -40,7 +40,7 @@ function __construct($what)
__halt_compiler();
?>
--EXPECTF--
-TypeError: SplFileInfo::setFileClass(): Argument #1 ($class) must be a class name derived from SplFileObject, SplFileInfo given
+TypeError: SplFileInfo::setFileClass(): Argument #1 ($class) must be a class name derived from SplFileObject, "SplFileInfo" given
MyFile::__construct(phar://%s/a.php)
a.php
MyFile::__construct(phar://%s/b/c.php)
diff --git a/ext/spl/tests/ArrayObject/arrayObject___construct_error1.phpt b/ext/spl/tests/ArrayObject/arrayObject___construct_error1.phpt
index 78660694d53..29500a5ca67 100644
--- a/ext/spl/tests/ArrayObject/arrayObject___construct_error1.phpt
+++ b/ext/spl/tests/ArrayObject/arrayObject___construct_error1.phpt
@@ -20,6 +20,6 @@
?>
--EXPECT--
Bad iterator type:
-TypeError: ArrayObject::__construct(): Argument #3 ($iteratorClass) must be a class name derived from ArrayIterator, Exception given
+TypeError: ArrayObject::__construct(): Argument #3 ($iteratorClass) must be a class name derived from ArrayIterator, "Exception" given
Non-existent class:
-TypeError: ArrayObject::__construct(): Argument #3 ($iteratorClass) must be a class name derived from ArrayIterator, nonExistentClassName given
+TypeError: ArrayObject::__construct(): Argument #3 ($iteratorClass) must be a class name derived from ArrayIterator, "nonExistentClassName" given
diff --git a/ext/spl/tests/ArrayObject/arrayObject_setIteratorClass_error1.phpt b/ext/spl/tests/ArrayObject/arrayObject_setIteratorClass_error1.phpt
index 1eb8d17ca66..d1257ab0a6b 100644
--- a/ext/spl/tests/ArrayObject/arrayObject_setIteratorClass_error1.phpt
+++ b/ext/spl/tests/ArrayObject/arrayObject_setIteratorClass_error1.phpt
@@ -43,7 +43,7 @@
?>
--EXPECT--
-TypeError: ArrayObject::setIteratorClass(): Argument #1 ($iteratorClass) must be a class name derived from ArrayIterator, nonExistentClass given
-TypeError: ArrayObject::setIteratorClass(): Argument #1 ($iteratorClass) must be a class name derived from ArrayIterator, stdClass given
-TypeError: ArrayObject::__construct(): Argument #3 ($iteratorClass) must be a class name derived from ArrayIterator, nonExistentClass given
-TypeError: ArrayObject::__construct(): Argument #3 ($iteratorClass) must be a class name derived from ArrayIterator, stdClass given
+TypeError: ArrayObject::setIteratorClass(): Argument #1 ($iteratorClass) must be a class name derived from ArrayIterator, "nonExistentClass" given
+TypeError: ArrayObject::setIteratorClass(): Argument #1 ($iteratorClass) must be a class name derived from ArrayIterator, "stdClass" given
+TypeError: ArrayObject::__construct(): Argument #3 ($iteratorClass) must be a class name derived from ArrayIterator, "nonExistentClass" given
+TypeError: ArrayObject::__construct(): Argument #3 ($iteratorClass) must be a class name derived from ArrayIterator, "stdClass" given
diff --git a/ext/spl/tests/SplFileInfo_setFileClass_error.phpt b/ext/spl/tests/SplFileInfo_setFileClass_error.phpt
index 96d4e5eddef..91ffd5664c7 100644
--- a/ext/spl/tests/SplFileInfo_setFileClass_error.phpt
+++ b/ext/spl/tests/SplFileInfo_setFileClass_error.phpt
@@ -13,4 +13,4 @@
?>
--EXPECT--
-TypeError: SplFileInfo::setFileClass(): Argument #1 ($class) must be a class name derived from SplFileObject, stdClass given
+TypeError: SplFileInfo::setFileClass(): Argument #1 ($class) must be a class name derived from SplFileObject, "stdClass" given
diff --git a/ext/spl/tests/SplFileInfo_setInfoClass_error.phpt b/ext/spl/tests/SplFileInfo_setInfoClass_error.phpt
index 10b568bc027..d1d465a0432 100644
--- a/ext/spl/tests/SplFileInfo_setInfoClass_error.phpt
+++ b/ext/spl/tests/SplFileInfo_setInfoClass_error.phpt
@@ -13,4 +13,4 @@
?>
--EXPECT--
-TypeError: SplFileInfo::setInfoClass(): Argument #1 ($class) must be a class name derived from SplFileInfo, stdClass given
+TypeError: SplFileInfo::setInfoClass(): Argument #1 ($class) must be a class name derived from SplFileInfo, "stdClass" given
diff --git a/ext/spl/tests/bug80719.phpt b/ext/spl/tests/bug80719.phpt
index e0d7282fae3..b13ec633f67 100644
--- a/ext/spl/tests/bug80719.phpt
+++ b/ext/spl/tests/bug80719.phpt
@@ -15,5 +15,5 @@
?>
--EXPECT--
-TypeError: ArrayObject::setIteratorClass(): Argument #1 ($iteratorClass) must be a class name derived from ArrayIterator, FilterIterator given
+TypeError: ArrayObject::setIteratorClass(): Argument #1 ($iteratorClass) must be a class name derived from ArrayIterator, "FilterIterator" given
int(42)
diff --git a/ext/standard/tests/class_object/get_class_methods_basic_001.phpt b/ext/standard/tests/class_object/get_class_methods_basic_001.phpt
index bee28f54422..fdfaf232ee0 100644
--- a/ext/standard/tests/class_object/get_class_methods_basic_001.phpt
+++ b/ext/standard/tests/class_object/get_class_methods_basic_001.phpt
@@ -57,5 +57,5 @@ class D {}
array(0) {
}
Argument is non existent class:
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
+get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, "NonExistent" given
Done
diff --git a/ext/standard/tests/class_object/get_class_methods_variation_001.phpt b/ext/standard/tests/class_object/get_class_methods_variation_001.phpt
deleted file mode 100644
index f7b86a2977a..00000000000
--- a/ext/standard/tests/class_object/get_class_methods_variation_001.phpt
+++ /dev/null
@@ -1,172 +0,0 @@
---TEST--
-Test get_class_methods() function : usage variations - unexpected types
---FILE--
-<?php
-function test_error_handler($err_no, $err_msg, $filename, $linenum) {
- echo "Error: $err_no - $err_msg\n";
-}
-set_error_handler('test_error_handler');
-
-echo "*** Testing get_class_methods() : usage variations ***\n";
-
-// Initialise function arguments not being substituted (if any)
-
-//get an unset variable
-$unset_var = 10;
-unset ($unset_var);
-
-//array of values to iterate over
-$values = array(
-
- // int data
- 0,
- 1,
- 12345,
- -2345,
-
- // float data
- 10.5,
- -10.5,
- 10.1234567e10,
- 10.7654321E-10,
- .5,
-
- // array data
- array(),
- array(0),
- array(1),
- array(1, 2),
- array('color' => 'red', 'item' => 'pen'),
-
- // null data
- NULL,
- null,
-
- // boolean data
- true,
- false,
- TRUE,
- FALSE,
-
- // empty data
- "",
- '',
-
- // string data
- "string",
- 'string',
-
- // object data
- new stdclass(),
-
- // undefined data
- $undefined_var,
-
- // unset data
- $unset_var,
-);
-
-// loop through each element of the array for class
-
-foreach($values as $value) {
- echo "\nArg value " . (is_object($value) ? get_class($value) : $value) . "\n";
- try {
- var_dump( get_class_methods($value) );
- } catch (TypeError $exception) {
- echo $exception->getMessage() . "\n";
- }
-}
-echo "Done";
-?>
---EXPECT--
-*** Testing get_class_methods() : usage variations ***
-Error: 2 - Undefined variable $undefined_var
-Error: 2 - Undefined variable $unset_var
-
-Arg value 0
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, int given
-
-Arg value 1
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, int given
-
-Arg value 12345
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, int given
-
-Arg value -2345
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, int given
-
-Arg value 10.5
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, float given
-
-Arg value -10.5
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, float given
-
-Arg value 101234567000
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, float given
-
-Arg value 1.07654321E-9
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, float given
-
-Arg value 0.5
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, float given
-Error: 2 - Array to string conversion
-
-Arg value Array
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
-Error: 2 - Array to string conversion
-
-Arg value Array
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
-Error: 2 - Array to string conversion
-
-Arg value Array
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
-Error: 2 - Array to string conversion
-
-Arg value Array
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
-Error: 2 - Array to string conversion
-
-Arg value Array
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
-
-Arg value
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, null given
-
-Arg value
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, null given
-
-Arg value 1
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, true given
-
-Arg value
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, false given
-
-Arg value 1
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, true given
-
-Arg value
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, false given
-
-Arg value
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
-
-Arg value
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
-
-Arg value string
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
-
-Arg value string
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
-
-Arg value stdClass
-array(0) {
-}
-
-Arg value
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, null given
-
-Arg value
-get_class_methods(): Argument #1 ($object_or_class) must be an object or a valid class name, null given
-Done
diff --git a/ext/standard/tests/class_object/get_parent_class_variation_002.phpt b/ext/standard/tests/class_object/get_parent_class_variation_002.phpt
deleted file mode 100644
index 8faeff9dd8d..00000000000
--- a/ext/standard/tests/class_object/get_parent_class_variation_002.phpt
+++ /dev/null
@@ -1,176 +0,0 @@
---TEST--
-Test get_parent_class() function : usage variations - unexpected argument type.
---FILE--
-<?php
-spl_autoload_register(function ($className) {
- echo "In autoload($className)\n";
-});
-
-function test_error_handler($err_no, $err_msg, $filename, $linenum) {
- echo "Error: $err_no - $err_msg\n";
-}
-set_error_handler('test_error_handler');
-
-echo "*** Testing get_parent_class() : usage variations ***\n";
-
-//get an unset variable
-$unset_var = 10;
-unset ($unset_var);
-
-//array of values to iterate over
-$values = array(
-
- // int data
- 0,
- 1,
- 12345,
- -2345,
-
- // float data
- 10.5,
- -10.5,
- 10.1234567e10,
- 10.7654321E-10,
- .5,
-
- // array data
- array(),
- array(0),
- array(1),
- array(1, 2),
- array('color' => 'red', 'item' => 'pen'),
-
- // null data
- NULL,
- null,
-
- // boolean data
- true,
- false,
- TRUE,
- FALSE,
-
- // empty data
- "",
- '',
-
- // string data
- "string",
- 'String',
-
- // object data
- new stdclass(),
-
- // undefined data
- $undefined_var,
-
- // unset data
- $unset_var,
-);
-
-// loop through each element of the array for object
-
-foreach ($values as $value) {
- echo "\nArg value " . (is_object($value) ? get_class($value) : $value) . "\n";
- try {
- var_dump(get_parent_class($value));
- } catch (TypeError $exception) {
- echo $exception->getMessage() . "\n";
- }
-}
-
-echo "Done";
-?>
---EXPECT--
-*** Testing get_parent_class() : usage variations ***
-Error: 2 - Undefined variable $undefined_var
-Error: 2 - Undefined variable $unset_var
-
-Arg value 0
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, int given
-
-Arg value 1
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, int given
-
-Arg value 12345
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, int given
-
-Arg value -2345
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, int given
-
-Arg value 10.5
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, float given
-
-Arg value -10.5
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, float given
-
-Arg value 101234567000
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, float given
-
-Arg value 1.07654321E-9
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, float given
-
-Arg value 0.5
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, float given
-Error: 2 - Array to string conversion
-
-Arg value Array
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
-Error: 2 - Array to string conversion
-
-Arg value Array
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
-Error: 2 - Array to string conversion
-
-Arg value Array
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
-Error: 2 - Array to string conversion
-
-Arg value Array
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
-Error: 2 - Array to string conversion
-
-Arg value Array
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, array given
-
-Arg value
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, null given
-
-Arg value
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, null given
-
-Arg value 1
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, true given
-
-Arg value
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, false given
-
-Arg value 1
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, true given
-
-Arg value
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, false given
-
-Arg value
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
-
-Arg value
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
-
-Arg value string
-In autoload(string)
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
-
-Arg value String
-In autoload(String)
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, string given
-
-Arg value stdClass
-bool(false)
-
-Arg value
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, null given
-
-Arg value
-get_parent_class(): Argument #1 ($object_or_class) must be an object or a valid class name, null given
-Done
diff --git a/ext/standard/tests/file/userstreams.phpt b/ext/standard/tests/file/userstreams.phpt
index d159b9612db..6ed35e1871f 100644
--- a/ext/standard/tests/file/userstreams.phpt
+++ b/ext/standard/tests/file/userstreams.phpt
@@ -319,7 +319,7 @@ function stream_seek($offset, $whence)
?>
--EXPECT--
-stream_wrapper_register(): Argument #2 ($class) must be a valid class name, class_not_exist given
+stream_wrapper_register(): Argument #2 ($class) must be a valid class name, "class_not_exist" given
Not Registered
Registered
Registered
diff --git a/ext/standard/tests/filters/001.phpt b/ext/standard/tests/filters/001.phpt
index 0a91b721344..6da55d2f005 100644
--- a/ext/standard/tests/filters/001.phpt
+++ b/ext/standard/tests/filters/001.phpt
@@ -14,16 +14,9 @@
echo $e::class, ': ', $e->getMessage(), PHP_EOL;
}
-try {
- var_dump(stream_filter_register("------", "nonexistentclass"));
-} catch (Throwable $e) {
- echo $e::class, ': ', $e->getMessage(), PHP_EOL;
-}
-
echo "Done\n";
?>
--EXPECT--
ValueError: stream_filter_register(): Argument #1 ($filter_name) must be a non-empty string
ValueError: stream_filter_register(): Argument #2 ($class) must be a concrete class
-TypeError: stream_filter_register(): Argument #2 ($class) must be a valid class name, nonexistentclass given
Done
diff --git a/ext/standard/tests/filters/stream_filter_register_non_existing_class.phpt b/ext/standard/tests/filters/stream_filter_register_non_existing_class.phpt
index b404d45524b..9a024deb9c1 100644
--- a/ext/standard/tests/filters/stream_filter_register_non_existing_class.phpt
+++ b/ext/standard/tests/filters/stream_filter_register_non_existing_class.phpt
@@ -16,7 +16,7 @@
?>
--EXPECTF--
-TypeError: stream_filter_register(): Argument #2 ($class) must be a valid class name, not_existing given
+TypeError: stream_filter_register(): Argument #2 ($class) must be a valid class name, "not_existing" given
Warning: stream_filter_append(): Unable to locate filter "not_existing_filter" in %s on line %d
Hello
diff --git a/ext/xsl/tests/transformToDoc_class_exceptions.phpt b/ext/xsl/tests/transformToDoc_class_exceptions.phpt
index 566d8711baa..5cdcc2e1fb4 100644
--- a/ext/xsl/tests/transformToDoc_class_exceptions.phpt
+++ b/ext/xsl/tests/transformToDoc_class_exceptions.phpt
@@ -28,5 +28,5 @@
?>
--EXPECT--
-XSLTProcessor::transformToDoc(): Argument #2 ($returnClass) must be a valid class name or null, NonExistent given
+XSLTProcessor::transformToDoc(): Argument #2 ($returnClass) must be a valid class name or null, "NonExistent" given
XSLTProcessor::transformToDoc(): Argument #2 ($returnClass) must be a class name compatible with SimpleXMLElement, DOMDocument given