static function createObjectFromRecord($record, $default_class_name, $conn, $lazy_attributes = null, $use_proxy = false) { if ($path = $record->get(lmbActiveRecord::getInheritanceField())) { $class_name = lmbActiveRecord::getInheritanceClass($record); if (!class_exists($class_name)) { throw new lmbException("Class '{$class_name}' not found"); } } else { $class_name = is_object($default_class_name) ? get_class($default_class_name) : $default_class_name; } if ($use_proxy || lmb_env_get('LIMB_ACTIVE_RECORD_FORCE_PROXY', false)) { $proxy_class = $class_name . '_ARProxy'; lmbARProxy::generate($proxy_class, $class_name); return new $proxy_class($record, $class_name, $conn, $lazy_attributes); } $object = new $class_name(null, $conn); if (is_array($lazy_attributes)) { $object->setLazyAttributes($lazy_attributes); } $object->loadFromRecord($record); return $object; }