コード例 #1
0
 /**
  * Loads the binding descriptor.
  *
  * @param Module                     $containingModule The module that
  *                                                     contains the
  *                                                     descriptor.
  * @param BindingTypeDescriptor|null $typeDescriptor   The type descriptor.
  *
  * @throws AlreadyLoadedException If the descriptor is already loaded.
  */
 public function load(Module $containingModule, BindingTypeDescriptor $typeDescriptor = null)
 {
     if (null !== $this->state) {
         throw new AlreadyLoadedException('The binding descriptor is already loaded.');
     }
     $this->loadErrors = array();
     if ($typeDescriptor && $typeDescriptor->isLoaded() && $typeDescriptor->isEnabled()) {
         try {
             $this->binding->initialize($typeDescriptor->getType());
         } catch (Exception $e) {
             $this->loadErrors[] = $e;
         }
     }
     $this->containingModule = $containingModule;
     $this->typeDescriptor = $typeDescriptor;
     $this->refreshState();
 }
コード例 #2
0
 /**
  * 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);
     }
 }