Scalr\Model\Collections\SettingsCollection::offsetSet PHP Method

offsetSet() public method

Sets setting value, creates internal entity
See also: ObjectAccess::offsetSet()
public offsetSet ( string $name, mixed $setting )
$name string Setting name
$setting mixed If $setting is array or object - interprets its fields as entity properties, otherwise - as value
    public function offsetSet($name, $setting)
    {
        if (isset($this->entities[$name])) {
            $entity =& $this->entities[$name];
        } else {
            $entity = new $this->entityClass();
            $entity->name = $name;
            foreach ($this->defaultProperties as $property => &$value) {
                $entity->{$property} =& $value;
            }
            $this->entities[$entity->name] =& $entity;
            $this->data[$entity->name] =& $entity->value;
            unset($value);
        }
        if ($setting instanceof $this->entityClass) {
            $entity = $setting;
            $entity->name = $name;
            foreach ($this->defaultProperties as $property => &$value) {
                if (empty($entity->{$property})) {
                    $entity->{$property} =& $value;
                }
            }
            $this->data[$entity->name] =& $entity->value;
        } else {
            if (is_object($setting) || is_array($setting)) {
                foreach ($setting as $property => $value) {
                    $entity->{$property} = $value;
                }
            } else {
                $entity->value = $setting;
            }
        }
        $this->modified[$entity->name] = $entity;
    }