<?php
function strict()
{
$backtrace = debug_backtrace(0, 2);
if (false === $backtrace || count($backtrace) !== 1) {
throw new \RuntimeException('strict() must be called from within a function');
}
$expectedTypes = func_get_args();
print_r($backtrace);
}
function myargs($a, $b)
{
strict('string', 'int');
echo 'Hello';
}
myargs('hello', 4);
Fatal error: Uncaught RuntimeException: strict() must be called from within a function in /in/jIqck:8
Stack trace:
#0 /in/jIqck(18): strict('string', 'int')
#1 /in/jIqck(23): myargs('hello', 4)
#2 {main}
thrown in /in/jIqck on line 8
Process exited with code 255.
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
Fatal error: Uncaught RuntimeException: strict() must be called from within a function in /in/jIqck:8
Stack trace:
#0 /in/jIqck(18): strict('string', 'int')
#1 /in/jIqck(23): myargs('hello', 4)
#2 {main}
thrown in /in/jIqck on line 8
Process exited with code 255.
Fatal error: Uncaught exception 'RuntimeException' with message 'strict() must be called from within a function' in /in/jIqck:8
Stack trace:
#0 /in/jIqck(18): strict('string', 'int')
#1 /in/jIqck(23): myargs('hello', 4)
#2 {main}
thrown in /in/jIqck on line 8
Process exited with code 255.