Ejemplo n.º 1
0
 /** @param int */
 private function handleLazy($key)
 {
     $object = call_user_func($this->lazy[$key][0]);
     if (!$object instanceof IListener) {
         $cb = Callback::create($this->lazy[$key][0]);
         throw new BadReturnException(array(NULL, __CLASS__ . " lazy factory {$cb}()", 'Orm\\IListener', $object));
     }
     $types = $this->lazy[$key][1];
     foreach (self::$instructions as $e => $m) {
         if (isset($types[$e])) {
             if ($object instanceof $m[0]) {
                 $this->listeners[$e][$types[$e]] = array(true, array($object, $m[1]));
             } else {
                 throw new InvalidArgumentException(ExceptionHelper::format(array($this, Callback::create($this->lazy[$key][0]), $m[0], $object), "%c1 lazy factory %s2() must return %s3; '%v4' given."));
             }
         } else {
             if ($object instanceof $m[0]) {
                 throw new InvalidArgumentException(ExceptionHelper::format(array($this, Callback::create($this->lazy[$key][0]), $m[0], $object), "%c1 lazy factory %s2() returns not expected %s3; '%v4'."));
             }
         }
     }
     unset($this->lazy[$key]);
 }