Haydnをコレクション演算部分に適用する例
利用するコード: https://github.com/phpmentors-jp/workflower/blob/master/src/Workflow/Workflow.php#L411
- ここではコレクションの要素を変換しつつ、変換結果を見てフィルタし、最終オブジェクトへ変換する。HaydnではPHPの配列/連想配列に入っているものなら何でも扱えるので、このようにオブジェクトのコレクションごと変換・フィルタといった操作として記述できる。
Haydnをコレクション演算部分に適用する例
利用するコード: https://github.com/phpmentors-jp/workflower/blob/master/src/Workflow/Workflow.php#L411
| public function getActivityLog() | |
| { | |
| $transitionLogSet = new Set( | |
| new SingleColumnArraySource('t', $this->stateMachine->getTransitionLog())); | |
| return $transitionLogSet | |
| ->select([function($row) { | |
| return ['f' => $this->getFlowObject($row['t']->getToState()->getStateId())]; | |
| }]) | |
| ->filter(new Matcher(['f'=>function($value) { | |
| return $value instanceof ActivityInterface; | |
| }])) | |
| ->select([function($row) { | |
| return ['a' => new ActivityLog($row['f'])]; | |
| }]); | |
| } | |
| // ActivityLogCollectionを使っていないので、workItemとの紐付けは行われないが |
| public function getActivityLog() | |
| { | |
| $activityLogCollection = new ActivityLogCollection(); | |
| foreach ($this->stateMachine->getTransitionLog() as $transitionLog) { | |
| $flowObject = $this->getFlowObject($transitionLog->getToState()->getStateId()); | |
| if ($flowObject instanceof ActivityInterface) { | |
| $activityLogCollection->add(new ActivityLog($flowObject)); | |
| } | |
| } | |
| return $activityLogCollection; | |
| } |