Skip to content

Commit 89fbc9e

Browse files
committed
Allow ViewModelFactory::create() and get()
1 parent 2be1a98 commit 89fbc9e

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

Factory/ViewModelFactory.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,28 @@ public function __construct(
1313
) {
1414
}
1515

16-
public function create(string $viewModelClass): ArgumentInterface
16+
public function get(string $viewModelClass): ArgumentInterface
1717
{
1818
$viewModel = $this->objectManager->get($viewModelClass);
19+
$this->validateViewModel($viewModel, $viewModelClass);
20+
return $viewModel;
21+
}
22+
23+
public function create(string $viewModelClass, array $data): ArgumentInterface
24+
{
25+
$viewModel = $this->objectManager->create($viewModelClass, $data);
26+
$this->validateViewModel($viewModel, $viewModelClass);
27+
return $viewModel;
28+
}
29+
30+
private function validateViewModel(mixed $viewModel, string $viewModelClass): void
31+
{
1932
if (empty($viewModel)) {
2033
throw new RuntimeException('ViewModel "' . $viewModelClass . '" could not be instantiated');
2134
}
2235

2336
if (false === $viewModel instanceof ArgumentInterface) {
2437
throw new RuntimeException('Class "' . $viewModelClass . '" is not a ViewModel');
2538
}
26-
27-
return $viewModel;
2839
}
2940
}

0 commit comments

Comments
 (0)