/** * Initializes a binding. * * @param Binding $binding The binding to initialize. * * @throws BindingNotAcceptedException If the loaded type does not accept * the binding. */ protected function initializeBinding(Binding $binding) { $binding->initialize($this->getBindingType($binding->getTypeName())); $bindingClass = get_class($binding); if (!isset($this->initializersByBindingClass[$bindingClass])) { $this->initializersByBindingClass[$bindingClass] = array(); // Find out which initializers accept the binding foreach ($this->initializers as $initializer) { if ($initializer->acceptsBinding($bindingClass)) { $this->initializersByBindingClass[$bindingClass][] = $initializer; } } } // Apply all initializers that we found foreach ($this->initializersByBindingClass[$bindingClass] as $initializer) { $initializer->initializeBinding($binding); } }
/** * Returns the name of the bound type. * * @return string The type name. */ public function getTypeName() { return $this->binding->getTypeName(); }
/** * {@inheritdoc} */ public function addBinding(Binding $binding) { $typeName = $binding->getTypeName(); if (!isset($this->keysByTypeName[$typeName])) { throw NoSuchTypeException::forTypeName($typeName); } if (isset($this->keysByUuid[$binding->getUuid()->toString()])) { // Ignore duplicates return; } $key = $this->keysByTypeName[$typeName]; if (!isset($this->bindingsByKey[$key])) { $this->loadBindingsForKey($key); } $this->initializeBinding($binding); $this->keysByUuid[$binding->getUuid()->toString()] = $key; $this->bindingsByKey[$key][] = $binding; $this->store->set('b:' . $key, $this->bindingsByKey[$key]); $this->store->set('::keysByUuid', $this->keysByUuid); }
/** * {@inheritdoc} */ public function addBinding(Binding $binding) { $typeName = $binding->getTypeName(); if (!isset($this->keysByTypeName[$typeName])) { throw NoSuchTypeException::forTypeName($typeName); } $key = $this->keysByTypeName[$typeName]; if (!isset($this->bindingsByKey[$key])) { $this->loadBindingsForKey($key); } $this->initializeBinding($binding); $this->bindingsByKey[$key][] = $binding; $this->store->set('b:' . $key, $this->bindingsByKey[$key]); }
/** * {@inheritdoc} */ public function addBinding(Binding $binding) { if (null === $this->json) { $this->load(); } $typeName = $binding->getTypeName(); if (!isset($this->json['keysByTypeName'][$typeName])) { throw NoSuchTypeException::forTypeName($typeName); } if (isset($this->json['keysByUuid'][$binding->getUuid()->toString()])) { // Ignore duplicates return; } $key = $this->json['keysByTypeName'][$typeName]; if (!isset($this->bindingsByKey[$key])) { $this->loadBindingsForKey($key); } $this->initializeBinding($binding); $this->bindingsByKey[$key][] = $binding; $this->json['keysByUuid'][$binding->getUuid()->toString()] = $key; $this->json['bindingsByKey'][$key] = serialize($this->bindingsByKey[$key]); $this->flush(); }
/** * {@inheritdoc} */ public function addBinding(Binding $binding) { $typeName = $binding->getTypeName(); $this->initializeBinding($binding); $this->bindingsByTypeName[$typeName][] = $binding; }
/** * {@inheritdoc} */ public function addBinding(Binding $binding) { if (null === $this->json) { $this->load(); } $typeName = $binding->getTypeName(); if (!isset($this->json['keysByTypeName'][$typeName])) { throw NoSuchTypeException::forTypeName($typeName); } $key = $this->json['keysByTypeName'][$typeName]; if (!isset($this->bindingsByKey[$key])) { $this->loadBindingsForKey($key); } $this->initializeBinding($binding); $this->bindingsByKey[$key][] = $binding; $this->json['bindingsByKey'][$key] = serialize($this->bindingsByKey[$key]); $this->flush(); }