src/Phan/Exception/IssueException.php
<?php
declare(strict_types=1);
namespace Phan\Exception;
use Exception;
use Phan\IssueInstance;
/**
* # Example Usage
* ```
* throw new IssueException(
* Issue::fromType(
* Issue::UndeclaredClassReference
* )(
* $context->getFile(),
* $node->getLine() ?? 0
* )
* );
* ```
*/
class IssueException extends Exception
{
/**
* @var IssueInstance
* An instance of an issue that was found but can't be
* reported on immediately.
*/
private $issue_instance;
/**
* @param IssueInstance $issue_instance
* An instance of an issue that was found but can't be
* reported on immediately.
*/
public function __construct(
IssueInstance $issue_instance
) {
parent::__construct();
$this->issue_instance = $issue_instance;
}
/**
* @return IssueInstance
* The issue that was found
*/
public function getIssueInstance(): IssueInstance
{
return $this->issue_instance;
}
/**
* @override
*/
public function __toString(): string
{
return \sprintf(
"IssueException at %s:%d: %s\n%s",
$this->getFile(),
$this->getLine(),
(string)$this->issue_instance,
$this->getTraceAsString()
);
}
}