class UndefinedFunctionFatalErrorHandler in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/symfony/debug/FatalErrorHandler/UndefinedFunctionFatalErrorHandler.php \Symfony\Component\Debug\FatalErrorHandler\UndefinedFunctionFatalErrorHandler
ErrorHandler for undefined functions.
@author Fabien Potencier <fabien@symfony.com>
Hierarchy
- class \Symfony\Component\Debug\FatalErrorHandler\UndefinedFunctionFatalErrorHandler implements FatalErrorHandlerInterface
Expanded class hierarchy of UndefinedFunctionFatalErrorHandler
2 files declare their use of UndefinedFunctionFatalErrorHandler
- ErrorHandler.php in vendor/
symfony/ debug/ ErrorHandler.php - UndefinedFunctionFatalErrorHandlerTest.php in vendor/
symfony/ debug/ Tests/ FatalErrorHandler/ UndefinedFunctionFatalErrorHandlerTest.php
File
- vendor/
symfony/ debug/ FatalErrorHandler/ UndefinedFunctionFatalErrorHandler.php, line 22
Namespace
Symfony\Component\Debug\FatalErrorHandlerView source
class UndefinedFunctionFatalErrorHandler implements FatalErrorHandlerInterface {
/**
* {@inheritdoc}
*/
public function handleError(array $error, FatalErrorException $exception) {
$messageLen = strlen($error['message']);
$notFoundSuffix = '()';
$notFoundSuffixLen = strlen($notFoundSuffix);
if ($notFoundSuffixLen > $messageLen) {
return;
}
if (0 !== substr_compare($error['message'], $notFoundSuffix, -$notFoundSuffixLen)) {
return;
}
$prefix = 'Call to undefined function ';
$prefixLen = strlen($prefix);
if (0 !== strpos($error['message'], $prefix)) {
return;
}
$fullyQualifiedFunctionName = substr($error['message'], $prefixLen, -$notFoundSuffixLen);
if (false !== ($namespaceSeparatorIndex = strrpos($fullyQualifiedFunctionName, '\\'))) {
$functionName = substr($fullyQualifiedFunctionName, $namespaceSeparatorIndex + 1);
$namespacePrefix = substr($fullyQualifiedFunctionName, 0, $namespaceSeparatorIndex);
$message = sprintf('Attempted to call function "%s" from namespace "%s".', $functionName, $namespacePrefix);
}
else {
$functionName = $fullyQualifiedFunctionName;
$message = sprintf('Attempted to call function "%s" from the global namespace.', $functionName);
}
$candidates = array();
foreach (get_defined_functions() as $type => $definedFunctionNames) {
foreach ($definedFunctionNames as $definedFunctionName) {
if (false !== ($namespaceSeparatorIndex = strrpos($definedFunctionName, '\\'))) {
$definedFunctionNameBasename = substr($definedFunctionName, $namespaceSeparatorIndex + 1);
}
else {
$definedFunctionNameBasename = $definedFunctionName;
}
if ($definedFunctionNameBasename === $functionName) {
$candidates[] = '\\' . $definedFunctionName;
}
}
}
if ($candidates) {
sort($candidates);
$last = array_pop($candidates) . '"?';
if ($candidates) {
$candidates = 'e.g. "' . implode('", "', $candidates) . '" or "' . $last;
}
else {
$candidates = '"' . $last;
}
$message .= "\nDid you mean to call " . $candidates;
}
return new UndefinedFunctionException($message, $exception);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
UndefinedFunctionFatalErrorHandler:: |
public | function |
Attempts to convert an error into an exception. Overrides FatalErrorHandlerInterface:: |