[php-src] master: Zend: normalise behaviour around class name ZPP specifier (#23359)

Gina Peter Banyard via GitHub <[email protected]>
Newsgroups gmane.comp.php.cvs.general
Message-ID <[email protected]>
Author: Gina Peter Banyard (Girgias)
Committer: GitHub (web-flow)
Pusher: Girgias
Date: 2026-08-21T13:31:45+01:00

Commit: https://github.com/php/php-src/commit/ee908f5542e3eeb2843440cf757a7e95a7ff1c83
Raw diff: https://github.com/php/php-src/commit/ee908f5542e3eeb2843440cf757a7e95a7ff1c83.diff

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.

Changed paths:
  A  Zend/tests/zpp/bug70914.phpt
  D  Zend/tests/bug70914.phpt
  D  ext/standard/tests/class_object/get_class_methods_variation_001.phpt
  D  ext/standard/tests/class_object/get_parent_class_variation_002.phpt
  M  Zend/tests/get_class_vars/get_class_vars_001.phpt
  M  Zend/tests/get_parent_class_basic.phpt
  M  Zend/tests/zpp/class-string_zpp_specifier_strict_mode.phpt
  M  Zend/tests/zpp/class-string_zpp_specifier_weak_mode.phpt
  M  Zend/tests/zpp/obj_or_class_name_zpp_strict_mode.phpt
  M  Zend/tests/zpp/obj_or_class_name_zpp_weak_mode.phpt
  M  Zend/zend_API.c
  M  Zend/zend_API.h
  M  ext/dom/tests/modern/html/interactions/HTMLDocument_registerNodeClass_01.phpt
  M  ext/mysqli/tests/mysqli_fetch_object.phpt
  M  ext/mysqli/tests/mysqli_fetch_object_oo.phpt
  M  ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt
  M  ext/pgsql/tests/22pg_fetch_object.phpt
  M  ext/phar/tests/phar_oo_006.phpt
  M  ext/spl/tests/ArrayObject/arrayObject___construct_error1.phpt
  M  ext/spl/tests/ArrayObject/arrayObject_setIteratorClass_error1.phpt
  M  ext/spl/tests/SplFileInfo_setFileClass_error.phpt
  M  ext/spl/tests/SplFileInfo_setInfoClass_error.phpt
  M  ext/spl/tests/bug80719.phpt
  M  ext/standard/tests/class_object/get_class_methods_basic_001.phpt
  M  ext/standard/tests/file/userstreams.phpt
  M  ext/standard/tests/filters/001.phpt
  M  ext/standard/tests/filters/stream_filter_register_non_existing_class.phpt
  M  ext/xsl/tests/transformToDoc_class_exceptions.phpt


Diff:

diff --git a/Zend/tests/bug70914.phpt b/Zend/tests/bug70914.phpt
deleted file mode 100644
index 73a43a5600dc..000000000000
--- 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 84f502610eca..a884409121c6 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 @@ array(2) {
   ["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 b439fbf9fb3e..8eabd64ca455 100644
--- a/Zend/tests/get_parent_class_basic.phpt
+++ b/Zend/tests/get_parent_class_basic.phpt
@@ -90,9 +90,9 @@ bool(false)
 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 000000000000..f7f37b3b6ea2
--- /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 bdc48e27d4ad..ffb9788f1cb4 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 @@ foreach ($types as $name => $type) {
 ?>
 --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"
 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 9341ecbb4102..6dd0a5b046b0 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 @@ foreach ($types as $name => $type) {
 ?>
 --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"
 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 9bdfd66ae4ee..7d2cac55e3b2 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 @@ Using 73.5:
 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 c14250a14f9e..cafe821364e9 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 @@ Using 73.5:
 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 b5bea957106b..e36ca8d1cfe2 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 f52f7aecb2b1..da871e1eb390 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 91604c5fab82..311fbd36039f 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 @@ $dom->registerNodeClass("Dom\\HTMLDocument", "DOMDocument");
 
 ?>
 --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 28e945db52f6..8077c6ca89fa 100644
--- a/ext/mysqli/tests/mysqli_fetch_object.phpt
+++ b/ext/mysqli/tests/mysqli_fetch_object.phpt
@@ -146,5 +146,5 @@ NULL
 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 b7b2c7812a96..20dd8296d3b6 100644
--- a/ext/mysqli/tests/mysqli_fetch_object_oo.phpt
+++ b/ext/mysqli/tests/mysqli_fetch_object_oo.phpt
@@ -116,12 +116,12 @@ require_once 'skipifconnectfailure.inc';
     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 0690878bac09..006e7d9306fc 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 @@ object(myclass)#%d (4) {
   ["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 939a3adb3505..d857295e5834 100644
--- a/ext/pgsql/tests/22pg_fetch_object.phpt
+++ b/ext/pgsql/tests/22pg_fetch_object.phpt
@@ -53,5 +53,5 @@ object(test_class)#%d (3) {
   ["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 627da36d5bc9..c4c99a1a2839 100644
--- a/ext/phar/tests/phar_oo_006.phpt
+++ b/ext/phar/tests/phar_oo_006.phpt
@@ -40,7 +40,7 @@ unlink(__DIR__ . '/files/phar_oo_006.phar.php');
 __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 78660694d530..29500a5ca672 100644
--- a/ext/spl/tests/ArrayObject/arrayObject___construct_error1.phpt
+++ b/ext/spl/tests/ArrayObject/arrayObject___construct_error1.phpt
@@ -20,6 +20,6 @@ try {
 ?>
 --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 1eb8d17ca66c..d1257ab0a6b7 100644
--- a/ext/spl/tests/ArrayObject/arrayObject_setIteratorClass_error1.phpt
+++ b/ext/spl/tests/ArrayObject/arrayObject_setIteratorClass_error1.phpt
@@ -43,7 +43,7 @@ try {
 
 ?>
 --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 96d4e5eddefa..91ffd5664c7b 100644
--- a/ext/spl/tests/SplFileInfo_setFileClass_error.phpt
+++ b/ext/spl/tests/SplFileInfo_setFileClass_error.phpt
@@ -13,4 +13,4 @@ try {
 
 ?>
 --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 10b568bc027f..d1d465a0432e 100644
--- a/ext/spl/tests/SplFileInfo_setInfoClass_error.phpt
+++ b/ext/spl/tests/SplFileInfo_setInfoClass_error.phpt
@@ -13,4 +13,4 @@ try {
 
 ?>
 --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 e0d7282fae38..b13ec633f678 100644
--- a/ext/spl/tests/bug80719.phpt
+++ b/ext/spl/tests/bug80719.phpt
@@ -15,5 +15,5 @@ foreach ($array as $v) {
 
 ?>
 --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 bee28f54422d..fdfaf232ee00 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 @@ Argument is name of class which has no methods:
 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 f7b86a2977ac..000000000000
--- 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 8faeff9dd8dc..000000000000
--- 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 d159b9612dbe..6ed35e1871f1 100644
--- a/ext/standard/tests/file/userstreams.phpt
+++ b/ext/standard/tests/file/userstreams.phpt
@@ -319,7 +319,7 @@ echo $data . "\n";
 
 ?>
 --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 0a91b7213445..6da55d2f005b 100644
--- a/ext/standard/tests/filters/001.phpt
+++ b/ext/standard/tests/filters/001.phpt
@@ -14,16 +14,9 @@ try {
     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 b404d45524b6..9a024deb9c12 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 @@ var_dump($out);
 
 ?>
 --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 566d8711baa4..5cdcc2e1fb4a 100644
--- a/ext/xsl/tests/transformToDoc_class_exceptions.phpt
+++ b/ext/xsl/tests/transformToDoc_class_exceptions.phpt
@@ -28,5 +28,5 @@ try {
 
 ?>
 --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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.