Beispiel #1
0
 /**
  * Returns mPDF object
  * @return mPDFExtended
  */
 public function getMPDF()
 {
     if (!$this->mPDF instanceof mPDF) {
         if ($this->createMPDF instanceof \Nette\Callback and $this->createMPDF->isCallable()) {
             $mpdf = $this->createMPDF->invoke($this);
             if (!$mpdf instanceof \mPDF) {
                 throw new \Nette\InvalidStateException("Callback function createMPDF must return mPDF object!");
             }
             $this->mPDF = $mpdf;
         } else {
             throw new \Nette\InvalidStateException("Callback createMPDF is not callable or is not instance of Nette\\Callback!");
         }
     }
     return $this->mPDF;
 }
Beispiel #2
0
 private function resolveClass($name, $recursive = array())
 {
     if (isset($recursive[$name])) {
         throw new InvalidArgumentException('Circular reference detected for services: ' . implode(', ', array_keys($recursive)) . '.');
     }
     $recursive[$name] = TRUE;
     $def = $this->definitions[$name];
     $factory = $this->normalizeEntity($this->expand($def->factory->entity));
     if ($def->class) {
         return $def->class;
     } elseif (is_array($factory)) {
         // method calling
         if ($service = $this->getServiceName($factory[0])) {
             if (Strings::contains($service, '\\')) {
                 // @Class
                 throw new ServiceCreationException("Unable resolve class name for service '{$name}'.");
             }
             $factory[0] = $this->resolveClass($service, $recursive);
             if (!$factory[0]) {
                 return;
             }
         }
         $factory = new Callback($factory);
         if (!$factory->isCallable()) {
             throw new InvalidStateException("Factory '{$factory}' is not callable.");
         }
         try {
             $reflection = $factory->toReflection();
             $def->class = preg_replace('#[|\\s].*#', '', $reflection->getAnnotation('return'));
             if ($def->class && !class_exists($def->class) && $def->class[0] !== '\\' && $reflection instanceof ReflectionMethod) {
             }
         } catch (ReflectionException $e) {
         }
     } elseif ($service = $this->getServiceName($factory)) {
         // alias or factory
         if (Strings::contains($service, '\\')) {
             // @Class
             $service = ltrim($service, '\\');
             $def->autowired = FALSE;
             return $def->class = $service;
         }
         if ($this->definitions[$service]->shared) {
             $def->autowired = FALSE;
         }
         return $def->class = $this->resolveClass($service, $recursive);
     } else {
         return $def->class = $factory;
         // class name
     }
 }