diff --git a/core/lib/Drupal/Component/Assertion/Handle.php b/core/lib/Drupal/Component/Assertion/Handle.php index dd9911e6a398810e08abe29ee5b7748b9d633088..5069b6b4677ea438b1e27ddb76e8cad03f770fec 100644 --- a/core/lib/Drupal/Component/Assertion/Handle.php +++ b/core/lib/Drupal/Component/Assertion/Handle.php @@ -1,41 +1,6 @@ <?php -/** - * @file - * Contains \Drupal\Component\Assertion\Handle. - * - * For PHP 5 this contains \AssertionError as well. - */ - -namespace { - -if (!class_exists('AssertionError', FALSE)) { - /** - * Emulates PHP 7 AssertionError as closely as possible. - * - * We force this class to exist at the root namespace for PHP 5. - * This class exists natively in PHP 7. Note that in PHP 7 it extends from - * Error, not Exception, but that isn't possible for PHP 5 - all exceptions - * must extend from exception. - */ - class AssertionError extends Exception { - - /** - * {@inheritdoc} - */ - public function __construct($message = '', $code = 0, Exception $previous = NULL, $file = '', $line = 0) { - parent::__construct($message, $code, $previous); - // Preserve the filename and line number of the assertion failure. - $this->file = $file; - $this->line = $line; - } - - } -} - -} - -namespace Drupal\Component\Assertion { +namespace Drupal\Component\Assertion; /** * Handler for runtime assertion failures. @@ -56,6 +21,9 @@ public static function register() { assert_options(ASSERT_WARNING, FALSE); if (version_compare(PHP_VERSION, '7.0.0-dev') < 0) { + if (!class_exists('AssertionError', FALSE)) { + require __DIR__ . '/global_namespace_php5.php'; + } // PHP 5 - create a handler to throw the exception directly. assert_options(ASSERT_CALLBACK, function($file = '', $line = 0, $code = '', $message = '') { if (empty($message)) { @@ -71,5 +39,3 @@ public static function register() { } } - -} diff --git a/core/lib/Drupal/Component/Assertion/global_namespace_php5.php b/core/lib/Drupal/Component/Assertion/global_namespace_php5.php new file mode 100644 index 0000000000000000000000000000000000000000..1b5caf46eafb2cb63ea83d3b4d1f3c8e2cc232fe --- /dev/null +++ b/core/lib/Drupal/Component/Assertion/global_namespace_php5.php @@ -0,0 +1,28 @@ +<?php + +/** + * @file + * Contains PHP5 version of the \AssertionError class. + */ + +/** + * Emulates PHP 7 AssertionError as closely as possible. + * + * This class is declared in the global namespace. It will only be included by + * \Drupal\Component\Assertion\Handle for PHP5 since this class exists natively + * in PHP 7. Note that in PHP 7 it extends from Error, not Exception, but that + * isn't possible for PHP 5 - all exceptions must extend from exception. + */ +class AssertionError extends Exception { + + /** + * {@inheritdoc} + */ + public function __construct($message = '', $code = 0, Exception $previous = NULL, $file = '', $line = 0) { + parent::__construct($message, $code, $previous); + // Preserve the filename and line number of the assertion failure. + $this->file = $file; + $this->line = $line; + } + +}