injectableFactory = $injectableFactory; } /** * Create a table. * * @todo Use binding. */ public function create(User $user): Table { $bindingContainer = $this->createBindingContainer($user); return $this->injectableFactory->createWithBinding(DefaultTable::class, $bindingContainer); } private function createBindingContainer(User $user): BindingContainer { $bindingData = new BindingData(); $binder = new Binder($bindingData); $binder ->bindCallback( User::class, function () use ($user): User { return $user; } ) ->bindImplementation(RoleListProvider::class, DefaultRoleListProvider::class) ->bindImplementation(CacheKeyProvider::class, DefaultCacheKeyProvider::class); return new BindingContainer($bindingData); } }