<?php declare(strict_types=1); namespace openvk\Web\Models\Repositories; use Chandler\Database\DatabaseConnection; use openvk\Web\Models\Entities\RowModel; use Nette\Database\Table\ActiveRow; abstract class Repository { private $context; private $table; protected $tableName; protected $modelName; function __construct() { $this->context = DatabaseConnection::i()->getContext(); $this->table = $this->context->table($this->tableName); } function toEntity(?ActiveRow $ar) { $entityName = "openvk\\Web\\Models\\Entities\\$this->modelName"; return is_null($ar) ? NULL : new $entityName($ar); } function get(int $id) { return $this->toEntity($this->table->get($id)); } use \Nette\SmartObject; }