Skip to content
Snippets Groups Projects
Format.php 2.28 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    use CodeIgniter\Config\BaseConfig;
    
    class Format extends BaseConfig
    {
    
        |--------------------------------------------------------------------------
        | Available Response Formats
        |--------------------------------------------------------------------------
        |
        | When you perform content negotiation with the request, these are the
        | available formats that your application supports. This is currently
        | only used with the API\ResponseTrait. A valid Formatter must exist
        | for the specified format.
        |
        | These formats are only checked when the data passed to the respond()
        | method is an array.
        |
        */
    
        public $supportedResponseFormats = [
            'application/json',
            'application/xml', // machine-readable XML
            'text/xml', // human-readable XML
        ];
    
        |--------------------------------------------------------------------------
        | Formatters
        |--------------------------------------------------------------------------
        |
        | Lists the class to use to format responses with of a particular type.
        | For each mime type, list the class that should be used. Formatters
        | can be retrieved through the getFormatter() method.
        |
        */
    
        public $formatters = [
            'application/json' => \CodeIgniter\Format\JSONFormatter::class,
            'application/xml' => \CodeIgniter\Format\XMLFormatter::class,
            'text/xml' => \CodeIgniter\Format\XMLFormatter::class,
        ];
    
        //--------------------------------------------------------------------
    
        /**
         * A Factory method to return the appropriate formatter for the given mime type.
         *
         * @param string $mime
         *
         * @return \CodeIgniter\Format\FormatterInterface
         */
        public function getFormatter(string $mime)
        {
            if (!array_key_exists($mime, $this->formatters)) {
                throw new \InvalidArgumentException(
                    'No Formatter defined for mime type: ' . $mime
                );
            }
    
            $class = $this->formatters[$mime];
    
            if (!class_exists($class)) {
                throw new \BadMethodCallException(
                    $class . ' is not a valid Formatter.'
                );
            }
    
        //--------------------------------------------------------------------