mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-01 00:44:26 +02:00
Make SmartyCompilerException play nicer with error handler libraries (#782)
* Make SmartyCompilerException play nicer with error handler libraries Added a new constructor, which accepts a filename and a line number too (similar to ErrorException, except no severity parameter) This way error handlers will display the correct file's correct line as the source of the exception, instead of the template's line in the core of the parser (php file) Kept the __toString() method, but removed $source, $desc, and $template * Revert the breaking changes
This commit is contained in:
@@ -1131,8 +1131,12 @@ abstract class Smarty_Internal_TemplateCompilerBase
|
||||
echo ob_get_clean();
|
||||
flush();
|
||||
}
|
||||
$e = new SmartyCompilerException($error_text);
|
||||
$e->setLine($line);
|
||||
$e = new SmartyCompilerException(
|
||||
$error_text,
|
||||
0,
|
||||
$this->template->source->filepath,
|
||||
$line
|
||||
);
|
||||
$e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ]));
|
||||
$e->desc = $args;
|
||||
$e->template = $this->template->source->filepath;
|
||||
|
@@ -7,6 +7,33 @@
|
||||
*/
|
||||
class SmartyCompilerException extends SmartyException
|
||||
{
|
||||
/**
|
||||
* The constructor of the exception
|
||||
*
|
||||
* @param string $message The Exception message to throw.
|
||||
* @param int $code The Exception code.
|
||||
* @param string|null $filename The filename where the exception is thrown.
|
||||
* @param int|null $line The line number where the exception is thrown.
|
||||
* @param Throwable|null $previous The previous exception used for the exception chaining.
|
||||
*/
|
||||
public function __construct(
|
||||
string $message = "",
|
||||
int $code = 0,
|
||||
?string $filename = null,
|
||||
?int $line = null,
|
||||
Throwable $previous = null
|
||||
) {
|
||||
parent::__construct($message, $code, $previous);
|
||||
|
||||
// These are optional parameters, should be be overridden only when present!
|
||||
if ($filename) {
|
||||
$this->file = $filename;
|
||||
}
|
||||
if ($line) {
|
||||
$this->line = $line;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
@@ -22,6 +49,7 @@ class SmartyCompilerException extends SmartyException
|
||||
{
|
||||
$this->line = $line;
|
||||
}
|
||||
|
||||
/**
|
||||
* The template source snippet relating to the error
|
||||
*
|
||||
|
Reference in New Issue
Block a user