public function __construct($extra_config = array())
 {
     parent::__construct();
     if (!empty($extra_config) && is_array($extra_config)) {
         $merged_configuration = $extra_config + $this->configuration;
         if (isset($extra_config['classes']) && isset($this->configuration['classes'])) {
             $merged_configuration['classes'] = $extra_config['classes'] + $this->configuration['classes'];
         }
         $this->configuration = $merged_configuration;
     }
 }
 /**
  * Construct the Google Client.
  *
  * @param $config Google_Config or string for the ini file to load
  */
 public function __construct($config = null)
 {
     if (is_string($config) && strlen($config)) {
         $config = new App_Google_Config($config);
     } else {
         if (!$config instanceof App_Google_Config) {
             $config = new App_Google_Config();
             if ($this->isAppEngine()) {
                 // Automatically use Memcache if we're in AppEngine.
                 $config->setCacheClass('App_Google_Cache_Memcache');
             }
             if (version_compare(phpversion(), "5.3.4", "<=") || $this->isAppEngine()) {
                 // Automatically disable compress.zlib, as currently unsupported.
                 $config->setClassConfig('App_Google_Http_Request', 'disable_gzip', true);
             }
         }
     }
     if ($config->getIoClass() == App_Google_Config::USE_AUTO_IO_SELECTION) {
         if (function_exists('curl_version') && function_exists('curl_exec') && !$this->isAppEngine()) {
             $config->setIoClass("App_Google_IO_Curl");
         } else {
             $config->setIoClass("App_Google_IO_Stream");
         }
     }
     $this->config = $config;
 }