- version_compare: documentation ( source)
- preg_match: documentation ( source)
- set_error_handler: documentation ( source)
- define: documentation ( source)
<?php
if (version_compare(PHP_VERSION, '7.0.0', '<')) {
define('BASIC_TYPE_HINT_REGEX', '#^Argument \d+ passed to .+? must be an instance of ([a-z]+), ([a-z]+) given#i');
function basic_type_hint($err_lvl, $err_msg) {
if ($err_lvl == E_RECOVERABLE_ERROR) {
if (preg_match(BASIC_TYPE_HINT_REGEX, $err_msg, $matches)) {
if ($matches[1] == $matches[2]) {
return true;
}
switch ($matches[1]) {
case 'int':
return $matches[2] == 'integer';
case 'bool':
return $matches[2] == 'boolean';
default:
return false;
}
}
}
return false;
}
set_error_handler('basic_type_hint');
}
function foo(int $a) {
print $a;
}
foo(42);
foo(23);