db = new DbDatabase(); if (is_object($row)) { $this->tour = $row; $this->setId(); } else { $this->id = $row; $this->loadFromDatabase(); } } protected function setId() { $this->id = $this->tour->FileName; } public static function newFromRow() { $tour = new self; $tour->tour = $row; } public static function newFromDb($id) { $db = new DbDatabase; $row = $db->getTournament($id); if (!$row) { return new DbPackageError($id); } elseif ($row->Type == 'Г' ) { return new DbPackageGroup($row); } elseif ($row->Type == 'Ч' ) { return new DbPackageChamp($row); } elseif ($row->Type == 'Т' ) { return new DbPackageTour($row); } } public function loadFromDatabase() { $this->tour = $this->db->getTournament($this->id); } public function getAll() { return false; } protected function getDbId() { return $this->tour->Id; } public function getTitle() { return $this->tour->Title; } public function getPrintVersion() { return 'Please override this function'; } public function getLongTitle() { return $this->getTitle(); } }