| @@ 453-470 (lines=18) @@ | ||
| 450 | * @return ArrayAccess|DescribableInterface|mixed |
|
| 451 | * @throws UnexpectedValueException If the structure is invalid. |
|
| 452 | */ |
|
| 453 | public function toModel($model = null) |
|
| 454 | { |
|
| 455 | if ($model) { |
|
| 456 | $structure = $this->structureModelFactory()->create($model); |
|
| 457 | ||
| 458 | if (!$structure instanceof ArrayAccess) { |
|
| 459 | throw new UnexpectedValueException(sprintf( |
|
| 460 | 'Structure [%s] must implement [%s]', |
|
| 461 | $model, |
|
| 462 | ArrayAccess::class |
|
| 463 | )); |
|
| 464 | } |
|
| 465 | ||
| 466 | return $structure; |
|
| 467 | } |
|
| 468 | ||
| 469 | return $this->structureProto(); |
|
| 470 | } |
|
| 471 | ||
| 472 | /** |
|
| 473 | * PropertyInterface::save(). |
|
| @@ 595-609 (lines=15) @@ | ||
| 592 | * @throws UnexpectedValueException If the structure is invalid. |
|
| 593 | * @return ArrayAccess |
|
| 594 | */ |
|
| 595 | private function createStructureModel() |
|
| 596 | { |
|
| 597 | $structClass = $this->getStructureModelClass(); |
|
| 598 | $structure = $this->structureModelFactory()->create($structClass); |
|
| 599 | ||
| 600 | if (!$structure instanceof ArrayAccess) { |
|
| 601 | throw new UnexpectedValueException(sprintf( |
|
| 602 | 'Structure [%s] must implement [%s]', |
|
| 603 | $structClass, |
|
| 604 | ArrayAccess::class |
|
| 605 | )); |
|
| 606 | } |
|
| 607 | ||
| 608 | return $structure; |
|
| 609 | } |
|
| 610 | ||
| 611 | /** |
|
| 612 | * Create a data-model structure. |
|