[php-src] master: ext/ffi: applied fixers to improve test robustness (#23131)

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

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

ext/ffi: applied fixers to improve test robustness (#23131)

Changed paths:
  M  ext/ffi/tests/003.phpt
  M  ext/ffi/tests/004.phpt
  M  ext/ffi/tests/008.phpt
  M  ext/ffi/tests/010.phpt
  M  ext/ffi/tests/012.phpt
  M  ext/ffi/tests/013.phpt
  M  ext/ffi/tests/014.phpt
  M  ext/ffi/tests/015.phpt
  M  ext/ffi/tests/016.phpt
  M  ext/ffi/tests/017.phpt
  M  ext/ffi/tests/018.phpt
  M  ext/ffi/tests/019.phpt
  M  ext/ffi/tests/020.phpt
  M  ext/ffi/tests/023.phpt
  M  ext/ffi/tests/027.phpt
  M  ext/ffi/tests/028.phpt
  M  ext/ffi/tests/031.phpt
  M  ext/ffi/tests/035.phpt
  M  ext/ffi/tests/045.phpt
  M  ext/ffi/tests/047.phpt
  M  ext/ffi/tests/bug77706.phpt
  M  ext/ffi/tests/bug78761.phpt
  M  ext/ffi/tests/bug78762.phpt
  M  ext/ffi/tests/bug79576.phpt
  M  ext/ffi/tests/deprecations.phpt
  M  ext/ffi/tests/gh14286_2.phpt
  M  ext/ffi/tests/gh16397.phpt
  M  ext/ffi/tests/gh18629_cdef_resolve_func.phpt
  M  ext/ffi/tests/gh18629_read_field_non_struct.phpt
  M  ext/ffi/tests/gh9698.phpt


Diff:

diff --git a/ext/ffi/tests/003.phpt b/ext/ffi/tests/003.phpt
index d608c013d5a3..fe7e9b86ff89 100644
--- a/ext/ffi/tests/003.phpt
+++ b/ext/ffi/tests/003.phpt
@@ -32,12 +32,12 @@ var_dump($ffi->new("d"));
 try {
     var_dump($ffi->new("struct _e"));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     var_dump($ffi->new("f"));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 echo "ok\n";
 ?>
diff --git a/ext/ffi/tests/004.phpt b/ext/ffi/tests/004.phpt
index 6852fe19ee75..1349257e5dce 100644
--- a/ext/ffi/tests/004.phpt
+++ b/ext/ffi/tests/004.phpt
@@ -42,12 +42,12 @@ var_dump($ffi->new("int[_c4]"));
 try {
     var_dump($ffi->new("enum _e"));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     var_dump($ffi->new("f"));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 echo "ok\n";
 ?>
diff --git a/ext/ffi/tests/008.phpt b/ext/ffi/tests/008.phpt
index 9ad015eac54b..480eff70e9e4 100644
--- a/ext/ffi/tests/008.phpt
+++ b/ext/ffi/tests/008.phpt
@@ -20,7 +20,7 @@ $a = $ffi->new("struct {int x,y;}");
 try {
     var_dump(count($a));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 
 try {
@@ -28,7 +28,7 @@ try {
         echo "$key => $val\n";
     }
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
diff --git a/ext/ffi/tests/010.phpt b/ext/ffi/tests/010.phpt
index ea17aef08c5d..a3275e018d1e 100644
--- a/ext/ffi/tests/010.phpt
+++ b/ext/ffi/tests/010.phpt
@@ -11,4 +11,4 @@ FFI::memset($a, ord("a"), FFI::sizeof($a));
 var_dump(FFI::string($a, FFI::sizeof($a)));
 ?>
 --EXPECT--
-string(12) "aaaaaaaaaaaa"
\ No newline at end of file
+string(12) "aaaaaaaaaaaa"
diff --git a/ext/ffi/tests/012.phpt b/ext/ffi/tests/012.phpt
index 8695b0ca0170..d33940ae732e 100644
--- a/ext/ffi/tests/012.phpt
+++ b/ext/ffi/tests/012.phpt
@@ -9,7 +9,7 @@ ffi.enable=1
 try {
     var_dump(serialize(FFI::cdef()->new("int[2]")));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
diff --git a/ext/ffi/tests/013.phpt b/ext/ffi/tests/013.phpt
index dc8b99c1d71f..2d8906b08b0f 100644
--- a/ext/ffi/tests/013.phpt
+++ b/ext/ffi/tests/013.phpt
@@ -16,43 +16,43 @@ var_dump(count($a[0][0]));
 try {
     var_dump($ffi->new("void"));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 
 try {
     var_dump($ffi->new("void[1]"));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("static int foo(int)[5];");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("static int foo[5](int);");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("static int foo(int)(int);");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("typedef int foo[2][];");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("typedef int foo[][2];");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
diff --git a/ext/ffi/tests/014.phpt b/ext/ffi/tests/014.phpt
index d0f877e7a7f2..98c70be33dc6 100644
--- a/ext/ffi/tests/014.phpt
+++ b/ext/ffi/tests/014.phpt
@@ -17,4 +17,4 @@ ok
 int(8)
 int(8)
 int(16)
-ok
\ No newline at end of file
+ok
diff --git a/ext/ffi/tests/015.phpt b/ext/ffi/tests/015.phpt
index de48105faa11..ccb7b699b11c 100644
--- a/ext/ffi/tests/015.phpt
+++ b/ext/ffi/tests/015.phpt
@@ -10,49 +10,49 @@ try {
     FFI::cdef("struct DIR; static struct DIR dir;");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct DIR; static struct DIR *ptr;");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct DIR; typedef struct DIR DIR; static DIR dir;");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct DIR; typedef struct DIR DIR; static DIR *ptr;");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct DIR; static struct DIR foo();");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct DIR; static struct DIR* foo();");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct DIR; static void foo(struct DIR);");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct DIR; static void foo(struct DIR*);");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 ok
diff --git a/ext/ffi/tests/016.phpt b/ext/ffi/tests/016.phpt
index 8a4326bb4d50..4581856e0ad8 100644
--- a/ext/ffi/tests/016.phpt
+++ b/ext/ffi/tests/016.phpt
@@ -10,19 +10,19 @@ try {
     FFI::cdef("struct X {void x();};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct X {struct X x;};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct X {struct X *ptr;};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 ok
diff --git a/ext/ffi/tests/017.phpt b/ext/ffi/tests/017.phpt
index 30f1efdde66c..af268da21a1c 100644
--- a/ext/ffi/tests/017.phpt
+++ b/ext/ffi/tests/017.phpt
@@ -9,17 +9,17 @@ ffi.enable=1
 try {
     var_dump(FFI::new("struct X {void x();}"));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     var_dump(FFI::new("struct X {struct X x;}"));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     var_dump(FFI::new("struct X {struct X *ptr;}"));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 ok
diff --git a/ext/ffi/tests/018.phpt b/ext/ffi/tests/018.phpt
index 76ab23e08dac..902cf9cdba76 100644
--- a/ext/ffi/tests/018.phpt
+++ b/ext/ffi/tests/018.phpt
@@ -10,13 +10,13 @@ try {
     FFI::cdef("struct X {struct X x[2];};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct X {struct X *ptr[2];};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 ok
diff --git a/ext/ffi/tests/019.phpt b/ext/ffi/tests/019.phpt
index 867c10556d4b..f07f7d382ee9 100644
--- a/ext/ffi/tests/019.phpt
+++ b/ext/ffi/tests/019.phpt
@@ -10,13 +10,13 @@ try {
     FFI::cdef("static int foo(int[]);");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("static int foo(int bar(int));");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 ok
diff --git a/ext/ffi/tests/020.phpt b/ext/ffi/tests/020.phpt
index 37cb6b17d116..aecc3e2631c1 100644
--- a/ext/ffi/tests/020.phpt
+++ b/ext/ffi/tests/020.phpt
@@ -14,7 +14,7 @@ try {
     $p->y = 1;
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     $p = $ffi->new("struct {const int x; int y;}");
@@ -22,35 +22,35 @@ try {
     $p->x = 1;
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     $p = $ffi->new("const struct {int x; int y;}");
     $p->x = 1;
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     $p = $ffi->new("const int[10]");
     $p[1] = 1;
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     $p = $ffi->new("const int * [1]");
     $p[0] = null;
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     $p = $ffi->new("int * const [1]");
     $p[0] = null;
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     $f = FFI::cdef("typedef int * const t[1];");
@@ -58,7 +58,7 @@ try {
     $p[0] = null;
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 ok
diff --git a/ext/ffi/tests/023.phpt b/ext/ffi/tests/023.phpt
index 9cf77d723b04..c9d9cf1b2829 100644
--- a/ext/ffi/tests/023.phpt
+++ b/ext/ffi/tests/023.phpt
@@ -11,7 +11,7 @@ ffi.enable=1
     try {
         var_dump(FFI::sizeof($ffi->new("struct {}")));
     } catch (Throwable $e) {
-        echo get_class($e) . ": " . $e->getMessage() . "\n";
+        echo $e::class, ': ', $e->getMessage(), "\n";
     }
     var_dump(FFI::sizeof($ffi->new("struct {int a}")));
     var_dump(FFI::sizeof($ffi->new("struct {int a; int b}")));
diff --git a/ext/ffi/tests/027.phpt b/ext/ffi/tests/027.phpt
index b71bab4001bf..31d18c06b712 100644
--- a/ext/ffi/tests/027.phpt
+++ b/ext/ffi/tests/027.phpt
@@ -12,70 +12,70 @@ try {
     $p = $ffi->new("int[*]");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("static int (*foo)[*];");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("typedef int foo[*];");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("static void foo(int[*][*]);");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     var_dump(FFI::sizeof($ffi->new("int[0]")));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     var_dump(FFI::sizeof($ffi->new("int[]")));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     var_dump(FFI::sizeof($ffi->cast("int[]", $ffi->new("int[2]"))));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct _x {int a; int b[];};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     $f = FFI::cdef("typedef int(*foo)[];");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     $f = FFI::cdef("typedef int foo[][2];");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     $f = FFI::cdef("typedef int foo[];");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     $f = FFI::cdef("static int foo(int[]);");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
diff --git a/ext/ffi/tests/028.phpt b/ext/ffi/tests/028.phpt
index 473980bcd218..13e477a39397 100644
--- a/ext/ffi/tests/028.phpt
+++ b/ext/ffi/tests/028.phpt
@@ -10,37 +10,37 @@ try {
     FFI::cdef("struct _x {int a; int b[0];};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct _x {int a; int b[];};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct _x {int a[0]; int b;};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct _x {int a[]; int b;};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("struct _x { struct {int a; int b[];}; int c;};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     FFI::cdef("union _x {int a; int b[];};");
     echo "ok\n";
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
diff --git a/ext/ffi/tests/031.phpt b/ext/ffi/tests/031.phpt
index d4b43f8f6e6d..295155c648b8 100644
--- a/ext/ffi/tests/031.phpt
+++ b/ext/ffi/tests/031.phpt
@@ -13,7 +13,7 @@ function test_size($expected_size, $type) {
             echo "FAIL: sizeof($type) != $expected_size ($size)\n";
         }
     } catch (Throwable $e) {
-        echo $type . "=>" . get_class($e) . ": " . $e->getMessage()."\n";
+        echo $type, '=>', $e::class, ': ', $e->getMessage(), "\n";
     }
 }
 
diff --git a/ext/ffi/tests/035.phpt b/ext/ffi/tests/035.phpt
index bd8c6df71f97..01ccc1eaf4ce 100644
--- a/ext/ffi/tests/035.phpt
+++ b/ext/ffi/tests/035.phpt
@@ -13,7 +13,7 @@ FFI::free($p);
 try {
     var_dump($p);
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECTF--
diff --git a/ext/ffi/tests/045.phpt b/ext/ffi/tests/045.phpt
index 84cecae01562..a4fec1115aeb 100644
--- a/ext/ffi/tests/045.phpt
+++ b/ext/ffi/tests/045.phpt
@@ -12,12 +12,12 @@ var_dump(FFI::isNull(FFI::addr($i)));
 try {
     var_dump(FFI::isNull(null));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
     var_dump(FFI::isNull(FFI::cdef()->new("int[0]")));
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage()."\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
diff --git a/ext/ffi/tests/047.phpt b/ext/ffi/tests/047.phpt
index e09da3fe9eec..48af033eb299 100644
--- a/ext/ffi/tests/047.phpt
+++ b/ext/ffi/tests/047.phpt
@@ -15,7 +15,7 @@ try {
 	$x->cdata = 42;
     var_dump($x);
 } catch (Throwable $e) {
-	echo $e->getMessage() . "\n";
+	echo $e::class, ': ', $e->getMessage(), "\n";
 }
 
 $x = FFI::cdef()->new("struct {int cdata;}");
@@ -23,7 +23,7 @@ try {
 	$x->cdata = 42;
     var_dump($x);
 } catch (Throwable $e) {
-	echo $e->getMessage() . "\n";
+	echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECTF--
@@ -31,7 +31,7 @@ object(FFI\CData:int32_t)#%d (1) {
   ["cdata"]=>
   int(42)
 }
-Attempt to assign field 'cdata' of non C struct/union
+FFI\Exception: Attempt to assign field 'cdata' of non C struct/union
 object(FFI\CData:struct <anonymous>)#%d (1) {
   ["cdata"]=>
   int(42)
diff --git a/ext/ffi/tests/bug77706.phpt b/ext/ffi/tests/bug77706.phpt
index 704c4aec5315..1cffbfac3f44 100644
--- a/ext/ffi/tests/bug77706.phpt
+++ b/ext/ffi/tests/bug77706.phpt
@@ -33,25 +33,25 @@ $ffi = FFI::cdef($header, 'libc.so.6');
 try {
     $ffi->time();
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage() . "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 
 try {
     $ffi->time(null, null);
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage() . "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 
 try {
     $ffi->fprintf($ffi->stdout);
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage() . "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 
 try {
     $ffi->fprintf($ffi->stdout, 123, "Hello %s\n", "World");
 } catch (Throwable $e) {
-    echo get_class($e) . ": " . $e->getMessage() . "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
diff --git a/ext/ffi/tests/bug78761.phpt b/ext/ffi/tests/bug78761.phpt
index fc1c66129114..41e4776aa7ba 100644
--- a/ext/ffi/tests/bug78761.phpt
+++ b/ext/ffi/tests/bug78761.phpt
@@ -15,9 +15,9 @@ opcache.preload={PWD}/bug78761_preload.php
 <?php
 try {
     FFI::cdef()->cast('char[10]', FFI::cdef()->new('char[1]'));
-} catch (FFI\Exception $ex) {
-    echo $ex->getMessage(), PHP_EOL;
+} catch (Throwable $ex) {
+    echo $ex::class, ': ', $ex->getMessage(), "\n";
 }
 ?>
 --EXPECT--
-attempt to cast to larger type
+FFI\Exception: attempt to cast to larger type
diff --git a/ext/ffi/tests/bug78762.phpt b/ext/ffi/tests/bug78762.phpt
index 5c621d3547e8..8619eaf3fc3f 100644
--- a/ext/ffi/tests/bug78762.phpt
+++ b/ext/ffi/tests/bug78762.phpt
@@ -6,9 +6,9 @@ ffi
 <?php
 try {
     FFI::cdef()->cast('char[10]', FFI::cdef()->new('char[1]'));
-} catch (FFI\Exception $ex) {
-    echo $ex->getMessage(), PHP_EOL;
+} catch (Throwable $ex) {
+    echo $ex::class, ': ', $ex->getMessage(), "\n";
 }
 ?>
 --EXPECT--
-attempt to cast to larger type
+FFI\Exception: attempt to cast to larger type
diff --git a/ext/ffi/tests/bug79576.phpt b/ext/ffi/tests/bug79576.phpt
index a5dee75564c6..5712701c2086 100644
--- a/ext/ffi/tests/bug79576.phpt
+++ b/ext/ffi/tests/bug79576.phpt
@@ -11,12 +11,12 @@ if (PHP_DEBUG || getenv('SKIP_ASAN')) echo "xleak FFI cleanup after parser error
 try {
 	FFI::cdef('struct tree *get_tree(const oid *, size_t, struct tree *);');
 } catch (Throwable $e) {
-	echo get_class($e) . ": " . $e->getMessage()."\n";
+	echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
 	FFI::cdef('struct tree *get_tree(oid, size_t, struct tree *);');
 } catch (Throwable $e) {
-	echo get_class($e) . ": " . $e->getMessage()."\n";
+	echo $e::class, ': ', $e->getMessage(), "\n";
 }
 try {
 	FFI::cdef('
@@ -25,7 +25,7 @@ typedef struct _simple_struct {
     } simple_struct;
 ');
 } catch (Throwable $e) {
-	echo get_class($e) . ": " . $e->getMessage()."\n";
+	echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 DONE
diff --git a/ext/ffi/tests/deprecations.phpt b/ext/ffi/tests/deprecations.phpt
index d62a214712d0..2ae3a5e93f77 100644
--- a/ext/ffi/tests/deprecations.phpt
+++ b/ext/ffi/tests/deprecations.phpt
@@ -14,8 +14,8 @@ set_error_handler(function ($severity, $message, $file, $line) {
 });
 try {
     FFI::new("uint8_t[2]");
-} catch (Exception $e) {
-    echo $e->getMessage() . "\n";
+} catch (Throwable $e) {
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 set_error_handler(null);
 
@@ -28,8 +28,8 @@ set_error_handler(function ($severity, $message, $file, $line) {
 });
 try {
     FFI::type("uint16_t[2]");
-} catch (Exception $e) {
-    echo $e->getMessage() . "\n";
+} catch (Throwable $e) {
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 set_error_handler(null);
 
@@ -39,14 +39,14 @@ set_error_handler(function ($severity, $message, $file, $line) {
 });
 try {
     FFI::cast("uint8_t[2]", $p1);
-} catch (Exception $e) {
-    echo $e->getMessage() . "\n";
+} catch (Throwable $e) {
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 
 ?>
 --EXPECTF--
 Deprecated: Calling FFI::new() statically is deprecated in %s on line %d
-Calling FFI::new() statically is deprecated
+Exception: Calling FFI::new() statically is deprecated
 object(FFI\CData:uint8_t[2])#1 (2) {
   [0]=>
   int(0)
@@ -55,7 +55,7 @@ object(FFI\CData:uint8_t[2])#1 (2) {
 }
 
 Deprecated: Calling FFI::type() statically is deprecated in %s on line %d
-Calling FFI::type() statically is deprecated
+Exception: Calling FFI::type() statically is deprecated
 
 Deprecated: Calling FFI::cast() statically is deprecated in %s on line %d
-Calling FFI::cast() statically is deprecated
+Exception: Calling FFI::cast() statically is deprecated
diff --git a/ext/ffi/tests/gh14286_2.phpt b/ext/ffi/tests/gh14286_2.phpt
index 4dc48ccc27a1..56fb2559008c 100644
--- a/ext/ffi/tests/gh14286_2.phpt
+++ b/ext/ffi/tests/gh14286_2.phpt
@@ -14,8 +14,8 @@ try {
         } x;
     ");
 } catch (Throwable $e) {
-    echo $e->getMessage(), "\n";
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
-Failed resolving C variable 'x'
+FFI\Exception: Failed resolving C variable 'x'
diff --git a/ext/ffi/tests/gh16397.phpt b/ext/ffi/tests/gh16397.phpt
index 19ddf7ecc62a..512b831a24ca 100644
--- a/ext/ffi/tests/gh16397.phpt
+++ b/ext/ffi/tests/gh16397.phpt
@@ -7,9 +7,9 @@ ffi
 $ffi = FFI::cdef();
 try {
     var_dump($ffi != 1);
-} catch (FFI\Exception $e) {
-    echo $e->getMessage(), "\n";
+} catch (Throwable $e) {
+    echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
-Cannot compare FFI objects
+FFI\Exception: Cannot compare FFI objects
diff --git a/ext/ffi/tests/gh18629_cdef_resolve_func.phpt b/ext/ffi/tests/gh18629_cdef_resolve_func.phpt
index ae81412efa63..8be51dc1d388 100644
--- a/ext/ffi/tests/gh18629_cdef_resolve_func.phpt
+++ b/ext/ffi/tests/gh18629_cdef_resolve_func.phpt
@@ -8,9 +8,9 @@ ffi.enable=1
 <?php
 try {
 	$ffi = FFI::cdef("void nonexistent_ffi_test_func(void);");
-} catch (\FFI\Exception $e) {
-	echo $e->getMessage() . "\n";
+} catch (\Throwable $e) {
+	echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
-Failed resolving C function 'nonexistent_ffi_test_func'
+FFI\Exception: Failed resolving C function 'nonexistent_ffi_test_func'
diff --git a/ext/ffi/tests/gh18629_read_field_non_struct.phpt b/ext/ffi/tests/gh18629_read_field_non_struct.phpt
index 307fde1a53b8..3c43c504c050 100644
--- a/ext/ffi/tests/gh18629_read_field_non_struct.phpt
+++ b/ext/ffi/tests/gh18629_read_field_non_struct.phpt
@@ -9,9 +9,9 @@ ffi.enable=1
 $x = FFI::cdef()->new("int*");
 try {
 	$y = $x->foo;
-} catch (\FFI\Exception $e) {
-	echo $e->getMessage() . "\n";
+} catch (\Throwable $e) {
+	echo $e::class, ': ', $e->getMessage(), "\n";
 }
 ?>
 --EXPECT--
-Attempt to read field 'foo' of non C struct/union
+FFI\Exception: Attempt to read field 'foo' of non C struct/union
diff --git a/ext/ffi/tests/gh9698.phpt b/ext/ffi/tests/gh9698.phpt
index bab403810cd3..952a096e3546 100644
--- a/ext/ffi/tests/gh9698.phpt
+++ b/ext/ffi/tests/gh9698.phpt
@@ -11,11 +11,12 @@ try {
     stream_wrapper_register('badffi', 'FFI\CData');
     file_get_contents('badffi://x');
 } catch (Throwable $exception) {
-    echo $exception->getMessage();
+    echo $exception::class, ': ', $exception->getMessage(), "\n";
 }
 ?>
 
 DONE
 --EXPECT--
-Attempt to assign field 'context' to uninitialized FFI\CData object
+FFI\Exception: Attempt to assign field 'context' to uninitialized FFI\CData object
+
 DONE
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.