/** * Magic method for getting field's values * @param string $name * @return mixed */ public function &__get($name) { $name = strtolower($name); if ($this->hasField($name)) { if (key_exists($name, $this->fields)) { $field = $this->getField($name); if ($field->getIdent() == PerfORM::DateTimeField || $field->getIdent() == PerfORM::TimeField || $field->getIdent() == PerfORM::DateField) { return $field; } elseif ($field->getIdent() == PerfORM::ForeignKeyField && $field->isEnabledLazyLoading() && !is_null($lazyLoadingKeyValue = $field->getValue())) { $referenceModel = get_class($field->getReference()); $model = new $referenceModel(); $model->objects()->load('id=%i', $lazyLoadingKeyValue); $field->setValue($model); $field->disableLazyLoading(); } $result = $field->getValue(); return $result; } elseif ($this->isExtended()) { $result = $this->extends->__get($name); return $result; } else { throw new Exception('logic exception'); } } else { throw new Exception("Model '" . get_class($this) . "' does not contain field '{$name}'."); } }