/** * * {@inheritdoc} * * @see \Core\Framework\Amvc\App\Javascript\JavascriptHandlerInterface::file($url, $defer, $external) */ public function file(string $url, bool $defer = true, bool $external = false) : JavascriptObjectInterface { // Do not add files already added if (in_array($url, self::$used_files)) { throw new JavascriptException(sprintf('Url "%s" is already set as included js file.', $url)); } $dt = debug_backtrace(); self::$used_files[self::$filecounter . '-' . $dt[1]['function']] = $url; self::$filecounter++; $object = new JavascriptObject(); $object->setType($object::TYPE_FILE); $object->setContent($url); $object->setExternal($external); $object->setDefer($defer); $this->add($object); return $object; }