[Debug] made guessing of possible class names more flexible

This commit is contained in:
Fabien Potencier 2013-07-24 05:31:30 +02:00
parent a0b1585d3c
commit 208ca5f8aa
2 changed files with 16 additions and 9 deletions

View File

@ -43,11 +43,6 @@ class ErrorHandler
E_PARSE => 'Parse',
);
private $classNameToUseStatementSuggestions = array(
'Request' => 'Symfony\Component\HttpFoundation\Request',
'Response' => 'Symfony\Component\HttpFoundation\Response',
);
private $level;
private $reservedMemory;
@ -293,11 +288,23 @@ class ErrorHandler
);
}
if (isset($this->classNameToUseStatementSuggestions[$className])) {
$message .= sprintf(' Perhaps you need to add "use %s" at the top of this file?', $this->classNameToUseStatementSuggestions[$className]);
if ($classes = $this->getUseStatementSuggestions($className)) {
$message .= sprintf(' Perhaps you need to add a use statement for one of the following class: %s.', implode(', ', $classes));
}
return new ClassNotFoundException($message, $exception);
}
}
protected function getUseStatementSuggestions($class)
{
$classNameToUseStatementSuggestions = array(
'Request' => array('Symfony\Component\HttpFoundation\Request'),
'Response' => array('Symfony\Component\HttpFoundation\Response'),
);
if (isset($classNameToUseStatementSuggestions[$class])) {
return $classNameToUseStatementSuggestions[$class];
}
}
}

View File

@ -121,7 +121,7 @@ class ErrorHandlerTest extends \PHPUnit_Framework_TestCase
'file' => 'foo.php',
'message' => 'Class "Request" not found',
),
'Attempted to load class "Request" from the global namespace in foo.php line 12. Did you forget a use statement for this class? Perhaps you need to add "use Symfony\\Component\\HttpFoundation\\Request" at the top of this file?',
'Attempted to load class "Request" from the global namespace in foo.php line 12. Did you forget a use statement for this class? Perhaps you need to add a use statement for one of the following class: Symfony\Component\HttpFoundation\Request.',
),
array(
array(
@ -130,7 +130,7 @@ class ErrorHandlerTest extends \PHPUnit_Framework_TestCase
'file' => 'foo.php',
'message' => 'Class "Foo\\Bar\\Request" not found',
),
'Attempted to load class "Request" from namespace "Foo\\Bar" in foo.php line 12. Do you need to "use" it from another namespace? Perhaps you need to add "use Symfony\\Component\\HttpFoundation\\Request" at the top of this file?',
'Attempted to load class "Request" from namespace "Foo\Bar" in foo.php line 12. Do you need to "use" it from another namespace? Perhaps you need to add a use statement for one of the following class: Symfony\Component\HttpFoundation\Request.',
),
);
}