/**
  * Populate the configuration from an array of settings
  *
  * @param array $settings
  * @throws \InvalidArgumentException
  */
 public function populate($settings = array())
 {
     $publicVars = Introspection::getPublicVars($this);
     foreach ($settings as $name => $value) {
         if ($name === 'adapters') {
             if (!is_array($value)) {
                 throw new \InvalidArgumentException("adapter value must be an array " . print_r($value, true) . " given.");
             }
             foreach ($value as $adapterType) {
                 if (!$this->validAdapter($adapterType)) {
                     throw new \InvalidArgumentException("{$adapterType} is not a support adapter type. Supported Adapters " . implode("|", $this->supportedAdapters));
                 }
             }
         }
         if ($name === 'namespaces') {
             $this->setNamespaces($value);
         } elseif ($name === 'adapterFactory') {
             $this->setAdapterFactory($value);
         } elseif (array_key_exists($name, $publicVars)) {
             $this->{$name} = $value;
         } else {
             $this->settings[$name] = $value;
         }
     }
 }
 /**
  * Get the currently set records
  *
  * @return \stdClass
  */
 public function getRecord()
 {
     return Introspection::getPublicVars($this);
 }
 /**
  * Convert out object to a standard array.
  *
  * @return array
  */
 public function toArray()
 {
     return Introspection::getPublicVars($this);
 }