В моем проекте symfony4 я хочу создать пользовательские исключения, поэтому я создал класс исключений:
ApiException
namespace App\Utils;
class ApiException extends \Exception
{
private $class;
private $function;
public function __construct(string $message, string $class, string $function, int $code = 0, \Exception $previous = null)
{
$this->class = $class;
$this->function = $function;
parent::__construct($message, $code, $previous);
}
public function __toString()
{
return $this->class.'\\'.$this->function.', Line '.$this->line.': '.$this->message;
}
}
Брось исключение
throw new ApiException('Please select a date between 1950 and 2050', __CLASS__, __FUNCTION__);
выход
App\\Utils\\Api\\by_year, Line 43: Please select a date between 1950 and 2050
Это именно то, что я хочу, НО, я бы хотел избежать передачи __CLASS__
и __FUNCTION__
в моем исключении.
Куда мне нужно ввести эти два параметра, чтобы они всегда были доступны. Вызов его в Exception дает мне имя класса и имя функции ExceptionClass, а не класс, выбрасывающий его?