Blame view

sources/apps/files_external/3rdparty/aws-sdk-php/Guzzle/Parser/ParserRegistry.php 1.9 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
  <?php
  
  namespace Guzzle\Parser;
  
  /**
   * Registry of parsers used by the application
   */
  class ParserRegistry
  {
      /** @var ParserRegistry Singleton instance */
      protected static $instance;
  
      /** @var array Array of parser instances */
      protected $instances = array();
  
      /** @var array Mapping of parser name to default class */
      protected $mapping = array(
          'message'      => 'Guzzle\\Parser\\Message\\MessageParser',
          'cookie'       => 'Guzzle\\Parser\\Cookie\\CookieParser',
          'url'          => 'Guzzle\\Parser\\Url\\UrlParser',
          'uri_template' => 'Guzzle\\Parser\\UriTemplate\\UriTemplate',
      );
  
      /**
       * @return self
       * @codeCoverageIgnore
       */
      public static function getInstance()
      {
          if (!self::$instance) {
              self::$instance = new static;
          }
  
          return self::$instance;
      }
  
      public function __construct()
      {
          // Use the PECL URI template parser if available
          if (extension_loaded('uri_template')) {
              $this->mapping['uri_template'] = 'Guzzle\\Parser\\UriTemplate\\PeclUriTemplate';
          }
      }
  
      /**
       * Get a parser by name from an instance
       *
       * @param string $name Name of the parser to retrieve
       *
       * @return mixed|null
       */
      public function getParser($name)
      {
          if (!isset($this->instances[$name])) {
              if (!isset($this->mapping[$name])) {
                  return null;
              }
              $class = $this->mapping[$name];
              $this->instances[$name] = new $class();
          }
  
          return $this->instances[$name];
      }
  
      /**
       * Register a custom parser by name with the register
       *
       * @param string $name   Name or handle of the parser to register
       * @param mixed  $parser Instantiated parser to register
       */
      public function registerParser($name, $parser)
      {
          $this->instances[$name] = $parser;
      }
  }