/** * @issue ZF-5435 */ public function testContainerMaintainsCorrectOrderOfItems() { $this->helper->offsetSetFile(1, 'test1.js'); $this->helper->offsetSetFile(20, 'test2.js'); $this->helper->offsetSetFile(10, 'test3.js'); $this->helper->offsetSetFile(5, 'test4.js'); $test = $this->helper->toString(); $expected = '<script type="text/javascript" src="test1.js"></script>' . PHP_EOL . '<script type="text/javascript" src="test4.js"></script>' . PHP_EOL . '<script type="text/javascript" src="test3.js"></script>' . PHP_EOL . '<script type="text/javascript" src="test2.js"></script>'; $this->assertEquals($expected, $test); }
/** * @param ScriptContainer $container * @param string|number $place * @return callable */ protected function getInjector($container, $place) { $insert = null; switch ($place) { case self::PLACE_APPEND: $insert = function ($jsFile, $type, $attrs) use($container) { $container->appendFile($jsFile, $type, $attrs); }; break; case self::PLACE_PREPEND: $insert = function ($jsFile, $type, $attrs) use($container) { $container->prependFile($jsFile, $type, $attrs); }; break; default: if (is_numeric($place)) { $insert = function ($jsFile, $type, $attrs) use($container, &$place) { $container->offsetSetFile($place, $jsFile, $type, $attrs); $place++; }; } break; } if (!is_callable($insert)) { throw new \RuntimeException('Failed to make JS files injector.'); } return $insert; }