[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/src/Error/Renderer/ -> JsonRenderer.php (source)

   1  <?php
   2  
   3  /**
   4   * Joomla! Content Management System
   5   *
   6   * @copyright  (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
   7   * @license    GNU General Public License version 2 or later; see LICENSE
   8   */
   9  
  10  namespace Joomla\CMS\Error\Renderer;
  11  
  12  use Joomla\Application\WebApplicationInterface;
  13  use Joomla\CMS\Error\AbstractRenderer;
  14  use Joomla\CMS\Factory;
  15  
  16  // phpcs:disable PSR1.Files.SideEffects
  17  \defined('JPATH_PLATFORM') or die;
  18  // phpcs:enable PSR1.Files.SideEffects
  19  
  20  /**
  21   * JSON error page renderer
  22   *
  23   * @since  4.0.0
  24   */
  25  class JsonRenderer extends AbstractRenderer
  26  {
  27      /**
  28       * The format (type) of the error page
  29       *
  30       * @var    string
  31       * @since  4.0.0
  32       */
  33      protected $type = 'json';
  34  
  35      /**
  36       * Render the error page for the given object
  37       *
  38       * @param   \Throwable  $error  The error object to be rendered
  39       *
  40       * @return  string
  41       *
  42       * @since   4.0.0
  43       */
  44      public function render(\Throwable $error): string
  45      {
  46          // Create our data object to be rendered
  47          $data = [
  48              'error'   => true,
  49              'code'    => $error->getCode(),
  50              'message' => $error->getMessage(),
  51          ];
  52  
  53          // Include the stack trace if in debug mode
  54          if (JDEBUG) {
  55              $data['trace'] = $error->getTraceAsString();
  56          }
  57  
  58          $app = Factory::getApplication();
  59  
  60          if ($app instanceof WebApplicationInterface) {
  61              $errorCode = 500;
  62  
  63              if ($error->getCode() > 0) {
  64                  $errorCode = $error->getCode();
  65              }
  66  
  67              $app->setHeader('status', $errorCode);
  68          }
  69  
  70          // Push the data object into the document
  71          $this->getDocument()->setBuffer(json_encode($data));
  72  
  73          if (ob_get_contents()) {
  74              ob_end_clean();
  75          }
  76  
  77          return $this->getDocument()->render();
  78      }
  79  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer