> */ private $data = []; public function __construct(private ServiceFactory $serviceFactory) {} /** * Get a record service by an entity class name. * * @template T of Entity * @param class-string $className An entity class name. * @return Service */ public function getByClass(string $className): Service { $entityType = RepositoryUtil::getEntityTypeByClass($className); /** @var Service */ return $this->get($entityType); } /** * Get a record service by an entity type. * * @return Service */ public function get(string $entityType): Service { if (!array_key_exists($entityType, $this->data)) { $this->load($entityType); } return $this->data[$entityType]; } private function load(string $entityType): void { $this->data[$entityType] = $this->serviceFactory->create($entityType); } }