src/Phan/Exception/CodeBaseException.php
<?php
declare(strict_types=1);
namespace Phan\Exception;
use AssertionError;
use Phan\Language\FQSEN;
/**
* Thrown to indicate that retrieving the element for an FQSEN from the CodeBase failed.
*/
class CodeBaseException extends \Exception
{
/** @var FQSEN|null the FQSEN that cannot be found in the code base */
private $missing_fqsen;
/**
* @param FQSEN|null $missing_fqsen
* The FQSEN that cannot be found in the code base
*
* @param string $message
* The error message
*/
public function __construct(
FQSEN $missing_fqsen = null,
string $message = ""
) {
parent::__construct($message);
$this->missing_fqsen = $missing_fqsen;
}
/**
* @return bool
* True if we have an FQSEN defined
*
* @suppress PhanUnreferencedPublicMethod
*/
public function hasFQSEN(): bool
{
return !\is_null($this->missing_fqsen);
}
/**
* @return FQSEN
* The missing FQSEN
*/
public function getFQSEN(): FQSEN
{
$fqsen = $this->missing_fqsen;
if (!$fqsen) {
throw new AssertionError('Should check CodeBaseException->hasFQSEN()');
}
return $fqsen;
}
}