<?php /** * This file is part of the CodeIgniter 4 framework. * * (c) CodeIgniter Foundation <admin@codeigniter.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace CodeIgniter\Exceptions; use RuntimeException; /** * Class FrameworkException * * A collection of exceptions thrown by the framework * that can only be determined at run time. */ class FrameworkException extends RuntimeException implements ExceptionInterface { use DebugTraceableTrait; public static function forEnabledZlibOutputCompression() { return new static(lang('Core.enabledZlibOutputCompression')); } public static function forInvalidFile(string $path) { return new static(lang('Core.invalidFile', [$path])); } public static function forCopyError(string $path) { return new static(lang('Core.copyError', [$path])); } public static function forMissingExtension(string $extension) { if (strpos($extension, 'intl') !== false) { // @codeCoverageIgnoreStart $message = sprintf( 'The framework needs the following extension(s) installed and loaded: %s.', $extension ); // @codeCoverageIgnoreEnd } else { $message = lang('Core.missingExtension', [$extension]); } return new static($message); } public static function forNoHandlers(string $class) { return new static(lang('Core.noHandlers', [$class])); } public static function forFabricatorCreateFailed(string $table, string $reason) { return new static(lang('Fabricator.createFailed', [$table, $reason])); } }