/** @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]); }