code: public function setAttribute($name, $value)
      {
          if ($this->hasAttribute($name)) {
              if (
                  !empty($this->_relationsDependencies[$name])
                  && (!array_key_exists($name, $this->_attributes) || $this->_attributes[$name] !== $value)
              ) {
                  $this->resetDependentRelations($name);
              }
              $this->_attributes[$name] = $value;
          } else {
              throw new InvalidArgumentException(get_class($this) . ' has no attribute named "' . $name . '".');
          }
      }
docs: Sets the named attribute value.
  @param string $name the attribute name
  @param mixed $value the attribute value.
  @throws InvalidArgumentException if the named attribute does not exist.
  @see hasAttribute()