private function validateInstallerClass($installerClass) { if (!class_exists($installerClass)) { throw NotInstallableException::installerClassNotFound($installerClass); } $reflClass = new ReflectionClass($installerClass); if ($reflClass->hasMethod('__construct') && $reflClass->getMethod('__construct')->getNumberOfRequiredParameters() > 0) { throw NotInstallableException::installerClassNoDefaultConstructor($installerClass); } if (!$reflClass->implementsInterface('Puli\\AssetPlugin\\Api\\Installer\\ResourceInstaller')) { throw NotInstallableException::installerClassInvalid($installerClass); } }
private function validateParameterValues(array $parameterValues, InstallerDescriptor $installerDescriptor) { $validator = new InstallerParameterValidator(); $violations = $validator->validate($parameterValues, $installerDescriptor); foreach ($violations as $violation) { switch ($violation->getCode()) { case ConstraintViolation::MISSING_PARAMETER: throw NotInstallableException::missingParameter($violation->getParameterName(), $violation->getInstallerName()); case ConstraintViolation::NO_SUCH_PARAMETER: throw NotInstallableException::noSuchParameter($violation->getParameterName(), $violation->getInstallerName()); } } }