<?php namespace MailPoetVendor\Doctrine\Instantiator\Exception; if (!defined('ABSPATH')) exit; use InvalidArgumentException as BaseInvalidArgumentException; use ReflectionClass; use function interface_exists; use function sprintf; use function trait_exists; class InvalidArgumentException extends BaseInvalidArgumentException implements ExceptionInterface { public static function fromNonExistingClass(string $className) : self { if (interface_exists($className)) { return new self(sprintf('The provided type "%s" is an interface, and cannot be instantiated', $className)); } if (trait_exists($className)) { return new self(sprintf('The provided type "%s" is a trait, and cannot be instantiated', $className)); } return new self(sprintf('The provided class "%s" does not exist', $className)); } public static function fromAbstractClass(ReflectionClass $reflectionClass) : self { return new self(sprintf('The provided class "%s" is abstract, and cannot be instantiated', $reflectionClass->getName())); } public static function fromEnum(string $className) : self { return new self(sprintf('The provided class "%s" is an enum, and cannot be instantiated', $className)); } }