* @author Adam Franco * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * @link https://wiki.jasig.org/display/CASC/phpCAS */ /** * An exception for terminatinating execution or to throw for unit testing * * @class CAS_GracefullTerminationException.php * @category Authentication * @package PhpCAS * @author Joachim Fritschi * @author Adam Franco * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * @link https://wiki.jasig.org/display/CASC/phpCAS */ class CAS_GracefullTerminationException extends RuntimeException implements CAS_Exception { /** * Test if exceptions should be thrown or if we should just exit. * In production usage we want to just exit cleanly when prompting the user * for a redirect without filling the error logs with uncaught exceptions. * In unit testing scenarios we cannot exit or we won't be able to continue * with our tests. * * @param string $message Message Text * @param string $code Error code * * @return void */ public function __construct ($message = 'Terminate Gracefully', $code = 0) { // Exit cleanly to avoid filling up the logs with uncaught exceptions. if (self::$_exitWhenThrown) { exit; } else { // Throw exceptions to allow unit testing to continue; parent::__construct($message, $code); } } private static $_exitWhenThrown = true; /** * Force phpcas to thow Exceptions instead of calling exit() * Needed for unit testing. Generally shouldn't be used in production due to * an increase in Apache error logging if CAS_GracefulTerminiationExceptions * are not caught and handled. * * @return void */ public static function throwInsteadOfExiting() { self::$_exitWhenThrown = false; } } ?>