<?php
//We're going to test this error handler passing wrong arguments to array_diff
//array_diff compares array items CASTING them to string. Yes, it is retarded. No, it's not the lol here.
//http://php.net/manual/en/function.array-diff.php
//We declare an object that can't be cast to string
$stdObject = new stdClass();
//First case: let's trigger an error
try {
$hello = (string) $stdObject;
}catch(Throwable $ee){
//Handler is called, exception is thrown and catched here. Yay!
echo "Catched exception: " . $ee->getMessage() . "\n";
}
echo "\n----------\n";
//Second case: let's trigger an error
try {
array_diff([], [$stdObject]);
}catch(Throwable $ee){
//Handler is called, exception is thrown and catched here. Yay!
echo "Catched exception: " . $ee->getMessage() . "\n";
}
echo "\n----------\n";
//Third case: let's trigger a slightly different error
try {
array_diff([$stdObject], [$stdObject]);
}catch(Throwable $ee){
//Handler is called, exception is thrown but... IT IS NOT CATCHED!
echo "Catched exception: " . $ee->getMessage() . "\n";
}
Catched exception: Object of class stdClass could not be converted to string
----------
----------
Catched exception: Object of class stdClass could not be converted to string
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Catched exception: Object of class stdClass could not be converted to string
----------
----------
Catched exception: Object of class stdClass could not be converted to string