コード例 #1
0
 public function snapshot(Snapshot $snapshot)
 {
     $player_class = $this->players_map->get_class($snapshot->id());
     $reflection = new \ReflectionClass($player_class);
     $parameters = $reflection->getConstructor()->getParameters();
     $args = [];
     foreach ($parameters as $parameter) {
         $parameter_name = $parameter->getName();
         $parameter_contract = $parameter->getClass()->name;
         if ($parameter_contract === Projection::class) {
             $args[$parameter_name] = $this->app->make($this->get_implementation_by_interface($player_class));
         } elseif ($parameter_contract === Snapshot::class) {
             $args[$parameter_name] = $snapshot;
         } elseif ($parameter_contract === Log::class) {
             $args[$parameter_name] = $this->app->make('EventLog');
         } else {
             $args[$parameter_name] = $this->app->make($parameter_contract);
         }
     }
     return $reflection->newInstanceArgs($args);
 }
コード例 #2
0
 public function save(Snapshot $snapshot)
 {
     $this->query()->where('id', $snapshot->id()->serialize())->update($snapshot->serialize());
 }