diff --git a/bundle/Spec/CirclicalAutoWire/Controller/ControllerWithParameters.php b/bundle/Spec/CirclicalAutoWire/Controller/ControllerWithParameters.php new file mode 100644 index 0000000..333c0ff --- /dev/null +++ b/bundle/Spec/CirclicalAutoWire/Controller/ControllerWithParameters.php @@ -0,0 +1,31 @@ +shouldHaveType(ReflectionFactory::class); + } + + function it_can_create_classes_that_end_with_controller(ContainerInterface $interface) + { + $this->canCreate($interface, 'SuperController')->shouldBe(true); + } + + function it_only_creates_controllers(ContainerInterface $interface) + { + $this->canCreate($interface, 'SuperFactory')->shouldBe(false); + } + + function it_can_create_controllers_through_reflection(ContainerInterface $interface, DummyObject $dummyObject, FormElementManagerV3Polyfill $formManager, DummyForm $form) + { + $formManager->get(DummyForm::class)->willReturn($form); + $interface->get(DummyObject::class)->willReturn($dummyObject); + $interface->get('FormElementManager')->willReturn($formManager); + $interface->get('config')->willReturn([]); + $this->__invoke($interface, ControllerWithParameters::class); + } + + function it_creates_parameterless_controllers(ContainerInterface $interface) + { + $this->__invoke($interface, AnnotatedController::class); + } + +} diff --git a/bundle/Spec/CirclicalAutoWire/Factory/Service/RouterServiceFactorySpec.php b/bundle/Spec/CirclicalAutoWire/Factory/Service/RouterServiceFactorySpec.php new file mode 100644 index 0000000..3e96e80 --- /dev/null +++ b/bundle/Spec/CirclicalAutoWire/Factory/Service/RouterServiceFactorySpec.php @@ -0,0 +1,31 @@ +shouldHaveType(RouterServiceFactory::class); + } + + function it_creates_router_services(ContainerInterface $container, TreeRouteStack $stack) + { + $container->get('config')->willReturn([ + 'circlical' => [ + 'autowire' => [ + 'production_mode' => false, + ], + ], + ]); + $container->get('HttpRouter')->willReturn($stack); + + $this->__invoke($container, RouterService::class)->shouldBeAnInstanceOf(RouterService::class); + } +} diff --git a/bundle/Spec/CirclicalAutoWire/Form/DummyForm.php b/bundle/Spec/CirclicalAutoWire/Form/DummyForm.php new file mode 100644 index 0000000..47a23e0 --- /dev/null +++ b/bundle/Spec/CirclicalAutoWire/Form/DummyForm.php @@ -0,0 +1,8 @@ +shouldHaveType(Module::class); + } + + function it_returns_its_config() + { + $this->getConfig()->shouldBeArray(); + } + + function it_binds_its_events(ModuleManager $moduleManager, EventManager $eventManager) + { + $eventManager->attach(ModuleEvent::EVENT_LOAD_MODULE, Argument::type('array'))->shouldBeCalled(); + $eventManager->attach(ModuleEvent::EVENT_MERGE_CONFIG, Argument::type('array'))->shouldBeCalled(); + $moduleManager->getEventManager()->willReturn($eventManager); + $this->init($moduleManager); + } + + function it_merges_config(ModuleEvent $event, ConfigListener $configListener) + { + $event->getConfigListener()->willReturn($configListener); + $configListener->getMergedConfig(false)->willReturn(include __DIR__ . '/../../../config/module.config.php'); + $this->configMerge($event); + } + + function it_freaks_out_if_autowire_config_is_missing(ModuleEvent $event, ConfigListener $configListener) + { + $event->getConfigListener()->willReturn($configListener); + $config = include __DIR__ . '/../../../config/module.config.php'; + unset($config['circlical']); + $configListener->getMergedConfig(false)->willReturn($config); + $this->shouldThrow(\Exception::class)->during('configMerge', [$event]); + } + + function it_sets_routes_in_production_mode_during_config_merge(ModuleEvent $event, ConfigListener $configListener) + { + $event->getConfigListener()->willReturn($configListener); + $config = include __DIR__ . '/../../../config/module.config.php'; + $config['circlical']['autowire']['compile_to'] = __DIR__ . '/compiled_routes.php'; + $configListener->getMergedConfig(false)->willReturn($config); + $configListener->setMergedConfig(Argument::type('array'))->shouldBeCalled(); + $this->configMerge($event); + } + + function it_listens_for_loading_modules(ModuleEvent $event1, ModuleEvent $event2) + { + $event1->getModuleName()->willReturn('A'); + $event2->getModuleName()->willReturn('B'); + $this->moduleLoaded($event1); + $this->moduleLoaded($event2); + } + + function it_merges_with_existing_routes_in_production_mode_during_config_merge(ModuleEvent $event, ConfigListener $configListener) + { + $event->getConfigListener()->willReturn($configListener); + $config = include __DIR__ . '/../../../config/module.config.php'; + $config['circlical']['autowire']['compile_to'] = __DIR__ . '/compiled_routes.php'; + $config['router']['routes'] = []; + $configListener->getMergedConfig(false)->willReturn($config); + $configListener->setMergedConfig(Argument::type('array'))->shouldBeCalled(); + $this->configMerge($event); + } + + function it_scans_modules_during_bootstrap_in_dev_mode_only(MvcEvent $mvcEvent, Application $application, ContainerInterface $container) + { + $mvcEvent->getApplication()->willReturn($application); + $application->getServiceManager()->willReturn($container); + + Console::overrideIsConsole(false); + + $container->get('config')->willReturn([ + 'circlical' => [ + 'autowire' => [ + 'production_mode' => false, + 'compile_to' => __DIR__ . '/compiled_routes.php', + ], + ], + ]); + + $container->get(RouterService::class)->willReturn(new RouterService(new TreeRouteStack(), false)); + + $this->onBootstrap($mvcEvent); + } + + function it_skips_compiling_in_prod_mode(MvcEvent $mvcEvent, Application $application, ContainerInterface $container) + { + $mvcEvent->getApplication()->willReturn($application); + $application->getServiceManager()->willReturn($container); + + Console::overrideIsConsole(false); + + $container->get('config')->willReturn([ + 'circlical' => [ + 'autowire' => [ + 'production_mode' => true, + 'compile_to' => __DIR__ . '/compiled_routes.php', + ], + ], + ]); + + $container->get(RouterService::class)->shouldNotBeCalled(); + + $this->onBootstrap($mvcEvent); + } +} diff --git a/bundle/Spec/CirclicalAutoWire/Service/RouterServiceSpec.php b/bundle/Spec/CirclicalAutoWire/Service/RouterServiceSpec.php index c90a0b0..90efaeb 100644 --- a/bundle/Spec/CirclicalAutoWire/Service/RouterServiceSpec.php +++ b/bundle/Spec/CirclicalAutoWire/Service/RouterServiceSpec.php @@ -28,14 +28,11 @@ function let(TreeRouteStack $routeStack) function it_parses_controllers_by_class() { - include __DIR__ . '/../../CirclicalAutoWire/Controller/SimpleController.php'; $this->parseController(SimpleController::class); } function it_parses_controllers_with_annotations($routeStack) { - include __DIR__ . '/../../CirclicalAutoWire/Controller/AnnotatedController.php'; - $routeStack->addRoute('baseroute1', [ 'type' => Literal::class, 'options' => [ @@ -67,8 +64,6 @@ function it_parses_controllers_with_annotations($routeStack) function it_parses_child_routes($routeStack) { - include __DIR__ . '/../../CirclicalAutoWire/Controller/ChildRouteController.php'; - $routeStack->addRoute('icecream', [ 'type' => Literal::class, 'options' => [ @@ -168,9 +163,6 @@ function it_parses_child_routes_across_controllers($routeStack) function it_lets_children_have_same_names($routeStack) { - include __DIR__ . '/../../CirclicalAutoWire/Controller/SameNameAController.php'; - include __DIR__ . '/../../CirclicalAutoWire/Controller/SameNameBController.php'; - $routeStack->addRoute('foocrud', [ 'type' => Literal::class, 'options' => [ @@ -221,4 +213,13 @@ function it_lets_children_have_same_names($routeStack) $this->parseController(SameNameBController::class); $this->compile(); } + + function its_annotions_can_be_reset() + { + $this->parseController(SameNameAController::class); + $this->getAnnotations()->shouldHaveCount(2); + $this->reset(); + $this->getAnnotations()->shouldBeArray(); + $this->getAnnotations()->shouldHaveCount(0); + } } \ No newline at end of file diff --git a/bundle/Spec/CirclicalAutoWire/bootstrap.php b/bundle/Spec/CirclicalAutoWire/bootstrap.php new file mode 100644 index 0000000..2456140 --- /dev/null +++ b/bundle/Spec/CirclicalAutoWire/bootstrap.php @@ -0,0 +1,10 @@ +=5.3.2" + "php": "^7.1" }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "^5.7" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.5.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Annotations\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" } }, "notification-url": "https://packagist.org/downloads/", @@ -100,7 +103,7 @@ "docblock", "parser" ], - "time": "2015-08-31 12:32:49" + "time": "2017-07-22T10:58:02+00:00" }, { "name": "doctrine/lexer", @@ -108,12 +111,12 @@ "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "reference": "cc709ba91eee09540091ad5a5f2616727662e41b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/cc709ba91eee09540091ad5a5f2616727662e41b", + "reference": "cc709ba91eee09540091ad5a5f2616727662e41b", "shasum": "" }, "require": { @@ -126,8 +129,8 @@ } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -154,31 +157,80 @@ "lexer", "parser" ], - "time": "2014-09-09 13:34:57" + "time": "2017-07-24 09:37:08" + }, + { + "name": "psr/container", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "2cc4a01788191489dc7459446ba832fa79a216a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/2cc4a01788191489dc7459446ba832fa79a216a7", + "reference": "2cc4a01788191489dc7459446ba832fa79a216a7", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-06-28 15:35:32" }, { "name": "zendframework/zend-code", - "version": "3.0.4", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-code.git", - "reference": "c5272131d3acb0f470a2462ed088fca3b6ba61c2" + "reference": "02944646c109fa53b6b6ab8b5269bb080fcdf5b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-code/zipball/c5272131d3acb0f470a2462ed088fca3b6ba61c2", - "reference": "c5272131d3acb0f470a2462ed088fca3b6ba61c2", + "url": "https://api.github.com/repos/zendframework/zend-code/zipball/02944646c109fa53b6b6ab8b5269bb080fcdf5b4", + "reference": "02944646c109fa53b6b6ab8b5269bb080fcdf5b4", "shasum": "" }, "require": { - "php": "^5.5 || 7.0.0 - 7.0.4 || ^7.0.6", + "php": "^7.1", "zendframework/zend-eventmanager": "^2.6 || ^3.0" }, "require-dev": { "doctrine/annotations": "~1.0", "ext-phar": "*", - "phpunit/phpunit": "^4.8.21", - "squizlabs/php_codesniffer": "^2.5", + "phpunit/phpunit": "^6.2.3", + "zendframework/zend-coding-standard": "^1.0.0", "zendframework/zend-stdlib": "^2.7 || ^3.0" }, "suggest": { @@ -188,8 +240,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" + "dev-master": "3.2-dev", + "dev-develop": "3.3-dev" } }, "autoload": { @@ -207,45 +259,49 @@ "code", "zf2" ], - "time": "2016-06-30 22:35:27" + "time": "2017-07-23T13:06:00+00:00" }, { "name": "zendframework/zend-config", - "version": "2.6.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-config.git", - "reference": "2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d" + "reference": "a12e4a592bf66d9629b84960e268f3752e53abe4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-config/zipball/2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d", - "reference": "2920e877a9f6dca9fa8f6bd3b1ffc2e19bb1e30d", + "url": "https://api.github.com/repos/zendframework/zend-config/zipball/a12e4a592bf66d9629b84960e268f3752e53abe4", + "reference": "a12e4a592bf66d9629b84960e268f3752e53abe4", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" + "ext-json": "*", + "php": "^5.6 || ^7.0", + "psr/container": "^1.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1" + }, + "conflict": { + "container-interop/container-interop": "<1.2.0" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", - "zendframework/zend-filter": "^2.6", - "zendframework/zend-i18n": "^2.5", - "zendframework/zend-json": "^2.6.1", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" + "malukenho/docheader": "^0.1.5", + "phpunit/phpunit": "^5.7 || ^6.0", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-filter": "^2.7.1", + "zendframework/zend-i18n": "^2.7.3", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.2.1" }, "suggest": { - "zendframework/zend-filter": "Zend\\Filter component", - "zendframework/zend-i18n": "Zend\\I18n component", - "zendframework/zend-json": "Zend\\Json to use the Json reader or writer classes", - "zendframework/zend-servicemanager": "Zend\\ServiceManager for use with the Config Factory to retrieve reader and writer instances" + "zendframework/zend-filter": "^2.7.1; install if you want to use the Filter processor", + "zendframework/zend-i18n": "^2.7.3; install if you want to use the Translator processor", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.2.1; if you need an extensible plugin manager for use with the Config Factory" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev", - "dev-develop": "2.7-dev" + "dev-master": "3.1-dev", + "dev-develop": "3.2-dev" } }, "autoload": { @@ -263,7 +319,7 @@ "config", "zf2" ], - "time": "2016-02-04 23:01:10" + "time": "2017-02-22T14:31:10+00:00" }, { "name": "zendframework/zend-console", @@ -315,7 +371,7 @@ "console", "zf2" ], - "time": "2016-02-09 17:15:12" + "time": "2016-02-09T17:15:12+00:00" }, { "name": "zendframework/zend-escaper", @@ -367,22 +423,22 @@ "source": { "type": "git", "url": "https://github.com/zendframework/zend-eventmanager.git", - "reference": "28b26fff230ffb8976d1d71fd1305ce886326d86" + "reference": "071016ade1deee5b8346ec9d8d48935437746c37" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/28b26fff230ffb8976d1d71fd1305ce886326d86", - "reference": "28b26fff230ffb8976d1d71fd1305ce886326d86", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/071016ade1deee5b8346ec9d8d48935437746c37", + "reference": "071016ade1deee5b8346ec9d8d48935437746c37", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0" + "php": "^5.6 || ^7.0" }, "require-dev": { "athletic/athletic": "^0.1", "container-interop/container-interop": "^1.1.0", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.0", + "phpunit/phpunit": "^6.0.7 || ^5.7.14", + "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-stdlib": "^2.7.3 || ^3.0" }, "suggest": { @@ -392,8 +448,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" + "dev-master": "3.2-dev", + "dev-develop": "3.3-dev" } }, "autoload": { @@ -413,7 +469,7 @@ "events", "zf2" ], - "time": "2016-05-12 14:58:33" + "time": "2017-07-11 19:19:12" }, { "name": "zendframework/zend-http", @@ -421,31 +477,32 @@ "source": { "type": "git", "url": "https://github.com/zendframework/zend-http.git", - "reference": "8cd475b4d52aa31ed6205f69a0a72b60ed989a27" + "reference": "c8e3397418b8aaa02696d033f9a299732630e26e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-http/zipball/8cd475b4d52aa31ed6205f69a0a72b60ed989a27", - "reference": "8cd475b4d52aa31ed6205f69a0a72b60ed989a27", + "url": "https://api.github.com/repos/zendframework/zend-http/zipball/c8e3397418b8aaa02696d033f9a299732630e26e", + "reference": "c8e3397418b8aaa02696d033f9a299732630e26e", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-loader": "^2.5", - "zendframework/zend-stdlib": "^2.5 || ^3.0", - "zendframework/zend-uri": "^2.5", - "zendframework/zend-validator": "^2.5" + "php": "^5.6 || ^7.0", + "zendframework/zend-loader": "^2.5.1", + "zendframework/zend-stdlib": "^3.1 || ^2.7.7", + "zendframework/zend-uri": "^2.5.2", + "zendframework/zend-validator": "^2.8.2" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "^4.0", - "zendframework/zend-config": "^2.5" + "malukenho/docheader": "^0.1.5", + "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^3.1 || ^2.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "2.6-dev", + "dev-develop": "2.7-dev" } }, "autoload": { @@ -463,7 +520,7 @@ "http", "zf2" ], - "time": "2016-08-08 15:10:07" + "time": "2017-03-07 20:11:07" }, { "name": "zendframework/zend-loader", @@ -515,41 +572,40 @@ "source": { "type": "git", "url": "https://github.com/zendframework/zend-modulemanager.git", - "reference": "b1b9c4011d7ea3fcbf34286bbf30e93a3d8c4185" + "reference": "1ad831a428110bb20e3ff56052dc4b0d9ecce3bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/b1b9c4011d7ea3fcbf34286bbf30e93a3d8c4185", - "reference": "b1b9c4011d7ea3fcbf34286bbf30e93a3d8c4185", + "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/1ad831a428110bb20e3ff56052dc4b0d9ecce3bb", + "reference": "1ad831a428110bb20e3ff56052dc4b0d9ecce3bb", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "zendframework/zend-config": "^2.6", - "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" + "php": "^5.6 || ^7.0", + "zendframework/zend-config": "^3.1 || ^2.6", + "zendframework/zend-eventmanager": "^3.2 || ^2.6.3", + "zendframework/zend-stdlib": "^3.0 || ^2.7" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0", + "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-console": "^2.6", "zendframework/zend-di": "^2.6", "zendframework/zend-loader": "^2.5", "zendframework/zend-mvc": "^2.7", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" + "zendframework/zend-servicemanager": "^3.0.3 || ^2.7.5" }, "suggest": { - "zendframework/zend-config": "Zend\\Config component", "zendframework/zend-console": "Zend\\Console component", - "zendframework/zend-loader": "Zend\\Loader component", + "zendframework/zend-loader": "Zend\\Loader component if you are not using Composer autoloading for your modules", "zendframework/zend-mvc": "Zend\\Mvc component", "zendframework/zend-servicemanager": "Zend\\ServiceManager component" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "2.8-dev" + "dev-master": "2.8-dev", + "dev-develop": "2.9-dev" } }, "autoload": { @@ -566,7 +622,7 @@ "modulemanager", "zf2" ], - "time": "2016-05-16 21:23:03" + "time": "2017-07-11 19:41:13" }, { "name": "zendframework/zend-mvc", @@ -574,12 +630,12 @@ "source": { "type": "git", "url": "https://github.com/zendframework/zend-mvc.git", - "reference": "b17f06e234de9d124ee85d6e176f8e24e05564ee" + "reference": "2e1a45e3636fd309cc9ce9e1913c901a269cefee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-mvc/zipball/b17f06e234de9d124ee85d6e176f8e24e05564ee", - "reference": "b17f06e234de9d124ee85d6e176f8e24e05564ee", + "url": "https://api.github.com/repos/zendframework/zend-mvc/zipball/2e1a45e3636fd309cc9ce9e1913c901a269cefee", + "reference": "2e1a45e3636fd309cc9ce9e1913c901a269cefee", "shasum": "" }, "require": { @@ -594,27 +650,31 @@ "zendframework/zend-view": "^2.6.7" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "^4.5", + "phpunit/phpunit": "^6.0.7 || ^5.7.14", + "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-json": "^2.6.1 || ^3.0", - "zendframework/zend-psr7bridge": "^0.2" + "zendframework/zend-psr7bridge": "^0.2", + "zendframework/zend-stratigility": "^2.0.1" }, "suggest": { "zendframework/zend-json": "(^2.6.1 || ^3.0) To auto-deserialize JSON body content in AbstractRestfulController extensions, when json_decode is unavailable", + "zendframework/zend-log": "^2.9.1 To provide log functionality via LogFilterManager, LogFormatterManager, and LogProcessorManager", "zendframework/zend-mvc-console": "zend-mvc-console provides the ability to expose zend-mvc as a console application", "zendframework/zend-mvc-i18n": "zend-mvc-i18n provides integration with zend-i18n, including a translation bridge and translatable route segments", "zendframework/zend-mvc-plugin-fileprg": "To provide Post/Redirect/Get functionality around forms that container file uploads", "zendframework/zend-mvc-plugin-flashmessenger": "To provide flash messaging capabilities between requests", "zendframework/zend-mvc-plugin-identity": "To access the authenticated identity (per zend-authentication) in controllers", "zendframework/zend-mvc-plugin-prg": "To provide Post/Redirect/Get functionality within controllers", + "zendframework/zend-paginator": "^2.7 To provide pagination functionality via PaginatorPluginManager", "zendframework/zend-psr7bridge": "(^0.2) To consume PSR-7 middleware within the MVC workflow", - "zendframework/zend-servicemanager-di": "zend-servicemanager-di provides utilities for integrating zend-di and zend-servicemanager in your zend-mvc application" + "zendframework/zend-servicemanager-di": "zend-servicemanager-di provides utilities for integrating zend-di and zend-servicemanager in your zend-mvc application", + "zendframework/zend-stratigility": "zend-stratigility is required to use middleware pipes in the MiddlewareListener" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" + "dev-master": "3.1-dev", + "dev-develop": "3.2-dev" } }, "autoload": { @@ -631,7 +691,7 @@ "mvc", "zf2" ], - "time": "2016-08-29 18:43:40" + "time": "2017-05-01 20:23:15" }, { "name": "zendframework/zend-router", @@ -692,7 +752,7 @@ "routing", "zf2" ], - "time": "2016-05-31 20:47:48" + "time": "2016-05-31T20:47:48+00:00" }, { "name": "zendframework/zend-servicemanager", @@ -700,32 +760,34 @@ "source": { "type": "git", "url": "https://github.com/zendframework/zend-servicemanager.git", - "reference": "6ed63fd1868c2bf65c0a27b7a71b095b046a98eb" + "reference": "087ea0dd1eb918f531d1b4d3c1888824dceb22c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/6ed63fd1868c2bf65c0a27b7a71b095b046a98eb", - "reference": "6ed63fd1868c2bf65c0a27b7a71b095b046a98eb", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/087ea0dd1eb918f531d1b4d3c1888824dceb22c6", + "reference": "087ea0dd1eb918f531d1b4d3c1888824dceb22c6", "shasum": "" }, "require": { - "container-interop/container-interop": "~1.0", - "php": "^5.6 || ^7.0", + "container-interop/container-interop": "^1.2", + "php": "^7.1", + "psr/container": "^1.0", "zendframework/zend-stdlib": "^3.1" }, "provide": { - "container-interop/container-interop-implementation": "^1.1" + "container-interop/container-interop-implementation": "^1.2", + "psr/container-implementation": "^1.0" }, "require-dev": { - "mikey179/vfsstream": "^1.6", - "ocramius/proxy-manager": "^1.0 || ^2.0", - "phpbench/phpbench": "^0.10.0", - "phpunit/phpunit": "^4.6 || ^5.2.10", - "squizlabs/php_codesniffer": "^2.5.1" + "mikey179/vfsstream": "^1.6.4", + "ocramius/proxy-manager": "^2.1.1", + "phpbench/phpbench": "^0.13.0", + "phpunit/phpunit": "^6.2.3", + "zendframework/zend-coding-standard": "~1.0.0" }, "suggest": { - "ocramius/proxy-manager": "ProxyManager 1.* to handle lazy initialization of services", - "zendframework/zend-stdlib": "zend-stdlib ^2.5 if you wish to use the MergeReplaceKey or MergeRemoveKey features in Config instances" + "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services", + "zendframework/zend-stdlib": "zend-stdlib ^2.7.7 | ^3.1 if you wish to use the MergeReplaceKey or MergeRemoveKey features in Config instances" }, "bin": [ "bin/generate-deps-for-config-factory", @@ -734,8 +796,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev", - "dev-develop": "3.2-dev" + "dev-master": "3.3-dev", + "dev-develop": "3.4-dev" } }, "autoload": { @@ -753,7 +815,7 @@ "servicemanager", "zf" ], - "time": "2016-09-19 14:57:37" + "time": "2017-08-10 13:39:58" }, { "name": "zendframework/zend-stdlib", @@ -853,23 +915,23 @@ "source": { "type": "git", "url": "https://github.com/zendframework/zend-validator.git", - "reference": "8422bb141aae5ae9ec6ec75cb6c5e723644e418d" + "reference": "39bd0516370559da2f7d4e87f2998551433f341b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/8422bb141aae5ae9ec6ec75cb6c5e723644e418d", - "reference": "8422bb141aae5ae9ec6ec75cb6c5e723644e418d", + "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/39bd0516370559da2f7d4e87f2998551433f341b", + "reference": "39bd0516370559da2f7d4e87f2998551433f341b", "shasum": "" }, "require": { "container-interop/container-interop": "^1.1", - "php": "^5.5 || ^7.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^2.7.6 || ^3.1" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "^4.0", + "phpunit/phpunit": "^6.0.8 || ^5.7.15", "zendframework/zend-cache": "^2.6.1", + "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-config": "^2.6", "zendframework/zend-db": "^2.7", "zendframework/zend-filter": "^2.6", @@ -877,24 +939,24 @@ "zendframework/zend-i18n": "^2.6", "zendframework/zend-math": "^2.6", "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-session": "^2.6.2", + "zendframework/zend-session": "^2.8", "zendframework/zend-uri": "^2.5" }, "suggest": { - "zendframework/zend-db": "Zend\\Db component", + "zendframework/zend-db": "Zend\\Db component, required by the (No)RecordExists validator", "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator", - "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages as well as to use the various Date validators", + "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages", "zendframework/zend-i18n-resources": "Translations of validator messages", - "zendframework/zend-math": "Zend\\Math component", + "zendframework/zend-math": "Zend\\Math component, required by the Csrf validator", "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", - "zendframework/zend-session": "Zend\\Session component", + "zendframework/zend-session": "Zend\\Session component, ^2.8; required by the Csrf validator", "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev", - "dev-develop": "2.9-dev" + "dev-master": "2.9-dev", + "dev-develop": "2.10-dev" }, "zf": { "component": "Zend\\Validator", @@ -916,7 +978,7 @@ "validator", "zf2" ], - "time": "2016-06-23 13:47:21" + "time": "2017-07-31 19:58:03" }, { "name": "zendframework/zend-view", @@ -924,25 +986,25 @@ "source": { "type": "git", "url": "https://github.com/zendframework/zend-view.git", - "reference": "f849076e57df6c8ec5397cd8d031401bda66ce9e" + "reference": "7026b6fb8070b7c343ac9fa77c3cb68f922ecd02" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-view/zipball/f849076e57df6c8ec5397cd8d031401bda66ce9e", - "reference": "f849076e57df6c8ec5397cd8d031401bda66ce9e", + "url": "https://api.github.com/repos/zendframework/zend-view/zipball/7026b6fb8070b7c343ac9fa77c3cb68f922ecd02", + "reference": "7026b6fb8070b7c343ac9fa77c3cb68f922ecd02", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", + "php": "^5.6 || ^7.0", "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", "zendframework/zend-loader": "^2.5", "zendframework/zend-stdlib": "^2.7 || ^3.0" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "^4.5", + "phpunit/phpunit": "^5.7.15 || ^6.0.8", "zendframework/zend-authentication": "^2.5", "zendframework/zend-cache": "^2.6.1", + "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-config": "^2.6", "zendframework/zend-console": "^2.6", "zendframework/zend-escaper": "^2.5", @@ -984,8 +1046,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev", - "dev-develop": "2.9-dev" + "dev-master": "2.9-dev", + "dev-develop": "2.10-dev" } }, "autoload": { @@ -1003,7 +1065,7 @@ "view", "zf2" ], - "time": "2016-06-30 22:29:38" + "time": "2017-08-10 09:45:10" } ], "packages-dev": [ @@ -1013,16 +1075,16 @@ "source": { "type": "git", "url": "https://github.com/codacy/php-codacy-coverage.git", - "reference": "2c80784a95f844e6988700e7373225284b713dd2" + "reference": "d46740b6b884bea92157f5434f59c4e751d6db5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/codacy/php-codacy-coverage/zipball/2c80784a95f844e6988700e7373225284b713dd2", - "reference": "2c80784a95f844e6988700e7373225284b713dd2", + "url": "https://api.github.com/repos/codacy/php-codacy-coverage/zipball/d46740b6b884bea92157f5434f59c4e751d6db5f", + "reference": "d46740b6b884bea92157f5434f59c4e751d6db5f", "shasum": "" }, "require": { - "gitonomy/gitlib": "~0.1", + "gitonomy/gitlib": ">=1.0", "php": ">=5.3.3", "symfony/console": "~2.5|~3.0" }, @@ -1050,7 +1112,7 @@ ], "description": "Sends PHP test coverage information to Codacy.", "homepage": "https://github.com/codacy/php-codacy-coverage", - "time": "2016-10-14 09:44:29" + "time": "2017-08-09 14:23:33" }, { "name": "doctrine/instantiator", @@ -1058,28 +1120,28 @@ "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "416fb8ad1d095a87f1d21bc40711843cd122fd4a" + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/416fb8ad1d095a87f1d21bc40711843cd122fd4a", - "reference": "416fb8ad1d095a87f1d21bc40711843cd122fd4a", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1104,20 +1166,20 @@ "constructor", "instantiate" ], - "time": "2016-03-31 10:24:22" + "time": "2017-07-22 11:58:36" }, { "name": "gitonomy/gitlib", - "version": "v0.1.8", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/gitonomy/gitlib.git", - "reference": "f575b8f7da917ade7890c6aa705fa22545690389" + "reference": "9ff6537dac74b2198fa5b0c85aec026bc037cce5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/gitonomy/gitlib/zipball/f575b8f7da917ade7890c6aa705fa22545690389", - "reference": "f575b8f7da917ade7890c6aa705fa22545690389", + "url": "https://api.github.com/repos/gitonomy/gitlib/zipball/9ff6537dac74b2198fa5b0c85aec026bc037cce5", + "reference": "9ff6537dac74b2198fa5b0c85aec026bc037cce5", "shasum": "" }, "require": { @@ -1158,7 +1220,7 @@ ], "description": "Library for accessing git", "homepage": "http://gitonomy.com", - "time": "2015-12-01 22:25:57" + "time": "2016-07-30 16:15:30" }, { "name": "henrikbjorn/phpspec-code-coverage", @@ -1201,7 +1263,7 @@ "MIT" ], "description": "Integrates CodeCoverage with PhpSpec", - "time": "2016-08-02 06:07:43" + "time": "2016-08-02T06:07:43+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1209,12 +1271,12 @@ "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + "reference": "a046af61c36e9162372f205de091a1cab7340f1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/a046af61c36e9162372f205de091a1cab7340f1c", + "reference": "a046af61c36e9162372f205de091a1cab7340f1c", "shasum": "" }, "require": { @@ -1255,26 +1317,26 @@ "reflection", "static analysis" ], - "time": "2015-12-27 11:43:31" + "time": "2017-04-30 11:58:12" }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.1.1", + "version": "3.2.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157", + "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157", "shasum": "" }, "require": { "php": ">=5.5", "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.2.0", + "phpdocumentor/type-resolver": "^0.3.0", "webmozart/assert": "^1.0" }, "require-dev": { @@ -1300,24 +1362,24 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30 07:12:33" + "time": "2017-08-08T06:39:58+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.2", + "version": "0.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" + "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", - "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773", + "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773", "shasum": "" }, "require": { - "php": ">=5.5", + "php": "^5.5 || ^7.0", "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { @@ -1347,7 +1409,7 @@ "email": "me@mikevanriel.com" } ], - "time": "2016-06-10 07:14:17" + "time": "2017-06-03T08:32:36+00:00" }, { "name": "phpspec/php-diff", @@ -1385,20 +1447,20 @@ } ], "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", - "time": "2016-04-07 12:29:16" + "time": "2016-04-07T12:29:16+00:00" }, { "name": "phpspec/phpspec", - "version": "3.1.1", + "version": "3.4.2", "source": { "type": "git", "url": "https://github.com/phpspec/phpspec.git", - "reference": "53d89ff6d328032c0e434a75af6b0e80ff2d669d" + "reference": "4f42719d8d7a26063b9aa79a0f83ed56c79618f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/phpspec/zipball/53d89ff6d328032c0e434a75af6b0e80ff2d669d", - "reference": "53d89ff6d328032c0e434a75af6b0e80ff2d669d", + "url": "https://api.github.com/repos/phpspec/phpspec/zipball/4f42719d8d7a26063b9aa79a0f83ed56c79618f4", + "reference": "4f42719d8d7a26063b9aa79a0f83ed56c79618f4", "shasum": "" }, "require": { @@ -1407,7 +1469,7 @@ "php": "^5.6 || ^7.0", "phpspec/php-diff": "^1.0.0", "phpspec/prophecy": "^1.5", - "sebastian/exporter": "^1.0", + "sebastian/exporter": "^1.0 || ^2.0 || ^3.0", "symfony/console": "^2.7 || ^3.0", "symfony/event-dispatcher": "^2.7 || ^3.0", "symfony/finder": "^2.7 || ^3.0", @@ -1415,13 +1477,13 @@ "symfony/yaml": "^2.7 || ^3.0" }, "require-dev": { - "behat/behat": "^3.1", + "behat/behat": "^3.3", "ciaranmcnulty/versionbasedtestskipper": "^0.2.1", - "phpunit/phpunit": "^5.4", + "phpunit/phpunit": "^5.5|^6.0", "symfony/filesystem": "^3.0" }, "suggest": { - "phpspec/nyan-formatters": "~1.0 – Adds Nyan formatters" + "phpspec/nyan-formatters": "Adds Nyan formatters" }, "bin": [ "bin/phpspec" @@ -1467,7 +1529,7 @@ "testing", "tests" ], - "time": "2016-09-26 21:11:31" + "time": "2017-08-05T20:07:26+00:00" }, { "name": "phpspec/prophecy", @@ -1475,29 +1537,29 @@ "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "5c324f4951aca87a2de61b7903b75126516b6386" + "reference": "420d44c5534bbf269e85e6213446e8284d53c6c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/5c324f4951aca87a2de61b7903b75126516b6386", - "reference": "5c324f4951aca87a2de61b7903b75126516b6386", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/420d44c5534bbf269e85e6213446e8284d53c6c7", + "reference": "420d44c5534bbf269e85e6213446e8284d53c6c7", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", - "sebastian/comparator": "^1.1", - "sebastian/recursion-context": "^1.0" + "sebastian/comparator": "^1.1|^2.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { - "phpspec/phpspec": "^2.0", - "phpunit/phpunit": "^4.8 || ^5" + "phpspec/phpspec": "^2.5|^3.2", + "phpunit/phpunit": "^4.8 || ^5.6.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.7.x-dev" } }, "autoload": { @@ -1530,39 +1592,39 @@ "spy", "stub" ], - "time": "2016-10-02 13:12:17" + "time": "2017-07-19 07:44:25" }, { "name": "phpunit/php-code-coverage", - "version": "dev-master", + "version": "4.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "8ca687f6b13f38f0593fe26a84de00ef4fd82c51" + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/8ca687f6b13f38f0593fe26a84de00ef4fd82c51", - "reference": "8ca687f6b13f38f0593fe26a84de00ef4fd82c51", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", "shasum": "" }, "require": { + "ext-dom": "*", + "ext-xmlwriter": "*", "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "^1.4.2", - "sebastian/code-unit-reverse-lookup": "~1.0", + "phpunit/php-file-iterator": "^1.3", + "phpunit/php-text-template": "^1.2", + "phpunit/php-token-stream": "^1.4.2 || ^2.0", + "sebastian/code-unit-reverse-lookup": "^1.0", "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "~1.0|~2.0" + "sebastian/version": "^1.0 || ^2.0" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "^5.4" + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.4.0", - "ext-xmlwriter": "*" + "ext-xdebug": "^2.5.1" }, "type": "library", "extra": { @@ -1593,7 +1655,7 @@ "testing", "xunit" ], - "time": "2016-10-03 07:41:08" + "time": "2017-04-02T07:44:40+00:00" }, { "name": "phpunit/php-file-iterator", @@ -1681,7 +1743,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-token-stream", @@ -1689,25 +1751,25 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "2ef59c57cd196301eeb88865d25916898dd72872" + "reference": "8c0bca4db90bb0a0b400ad8e90fee3210081701d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/2ef59c57cd196301eeb88865d25916898dd72872", - "reference": "2ef59c57cd196301eeb88865d25916898dd72872", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/8c0bca4db90bb0a0b400ad8e90fee3210081701d", + "reference": "8c0bca4db90bb0a0b400ad8e90fee3210081701d", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1730,7 +1792,7 @@ "keywords": [ "tokenizer" ], - "time": "2016-10-03 07:38:46" + "time": "2017-08-03 14:21:49" }, { "name": "psr/log", @@ -1785,19 +1847,19 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "0a16efaff1cb18cf03d612d54e449db4a9e138c6" + "reference": "3488be0a7b346cd6e5361510ed07e88f9bea2e88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/0a16efaff1cb18cf03d612d54e449db4a9e138c6", - "reference": "0a16efaff1cb18cf03d612d54e449db4a9e138c6", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/3488be0a7b346cd6e5361510ed07e88f9bea2e88", + "reference": "3488be0a7b346cd6e5361510ed07e88f9bea2e88", "shasum": "" }, "require": { - "php": ">=5.6" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^5.7 || ^6.0" }, "type": "library", "extra": { @@ -1822,7 +1884,7 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2016-10-03 07:37:58" + "time": "2017-03-04 10:23:55" }, { "name": "sebastian/comparator", @@ -1830,26 +1892,26 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "21400bd9503c3782f5ee80349117483dcf8cec3f" + "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/21400bd9503c3782f5ee80349117483dcf8cec3f", - "reference": "21400bd9503c3782f5ee80349117483dcf8cec3f", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/ae068fede81d06e7bb9bb46a367210a3d3e1fe6a", + "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2" + "php": "^7.0", + "sebastian/diff": "^2.0", + "sebastian/exporter": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -1886,7 +1948,7 @@ "compare", "equality" ], - "time": "2016-10-03 07:45:42" + "time": "2017-08-03 07:14:59" }, { "name": "sebastian/diff", @@ -1894,24 +1956,24 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "d0814318784b7756fb932116acd19ee3b0cbe67a" + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/d0814318784b7756fb932116acd19ee3b0cbe67a", - "reference": "d0814318784b7756fb932116acd19ee3b0cbe67a", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.8" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1938,20 +2000,20 @@ "keywords": [ "diff" ], - "time": "2016-10-03 07:45:03" + "time": "2017-08-03 08:09:46" }, { "name": "sebastian/environment", - "version": "dev-master", + "version": "2.0.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "845620270f5b0714beeefd161efc0d7878d2a6d9" + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/845620270f5b0714beeefd161efc0d7878d2a6d9", - "reference": "845620270f5b0714beeefd161efc0d7878d2a6d9", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", "shasum": "" }, "require": { @@ -1988,7 +2050,7 @@ "environment", "hhvm" ], - "time": "2016-10-03 07:36:49" + "time": "2016-11-26T07:53:53+00:00" }, { "name": "sebastian/exporter", @@ -1996,26 +2058,26 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "7dfcd2418aacbdb5e123fb23ac735acfdd6c588d" + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7dfcd2418aacbdb5e123fb23ac735acfdd6c588d", - "reference": "7dfcd2418aacbdb5e123fb23ac735acfdd6c588d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", + "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "php": "^7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -2055,7 +2117,7 @@ "export", "exporter" ], - "time": "2016-10-03 07:44:30" + "time": "2017-04-03 13:19:02" }, { "name": "sebastian/recursion-context", @@ -2063,24 +2125,24 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + "reference": "a0e54bc9bf04e2c5b302236984cebc277631f0f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", - "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/a0e54bc9bf04e2c5b302236984cebc277631f0f1", + "reference": "a0e54bc9bf04e2c5b302236984cebc277631f0f1", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -2108,7 +2170,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03 07:41:43" + "time": "2017-03-07 15:09:59" }, { "name": "sebastian/version", @@ -2155,39 +2217,46 @@ }, { "name": "symfony/console", - "version": "dev-master", + "version": "3.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "e12930d96cc0c15fd1de61d14a037c707baa901f" + "reference": "0e283478c2d68c9bf9cc52592ad1ef1834083a85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/e12930d96cc0c15fd1de61d14a037c707baa901f", - "reference": "e12930d96cc0c15fd1de61d14a037c707baa901f", + "url": "https://api.github.com/repos/symfony/console/zipball/0e283478c2d68c9bf9cc52592ad1ef1834083a85", + "reference": "0e283478c2d68c9bf9cc52592ad1ef1834083a85", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/debug": "~2.8|~3.0", + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", "symfony/polyfill-mbstring": "~1.0" }, + "conflict": { + "symfony/dependency-injection": "<3.3", + "symfony/process": "<3.3" + }, "require-dev": { "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/filesystem": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/http-kernel": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" }, "suggest": { "psr/log": "For using the console logger", "symfony/event-dispatcher": "", - "symfony/filesystem": "", + "symfony/lock": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2214,7 +2283,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2016-10-06 08:59:27" + "time": "2017-08-10 07:07:17" }, { "name": "symfony/debug", @@ -2222,29 +2291,28 @@ "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "61de4883414e3a640ffac1798d411a37dc71bc20" + "reference": "07bc974dbe18bf4e520ba9e919f1ba46420657e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/61de4883414e3a640ffac1798d411a37dc71bc20", - "reference": "61de4883414e3a640ffac1798d411a37dc71bc20", + "url": "https://api.github.com/repos/symfony/debug/zipball/07bc974dbe18bf4e520ba9e919f1ba46420657e9", + "reference": "07bc974dbe18bf4e520ba9e919f1ba46420657e9", "shasum": "" }, "require": { - "php": ">=5.5.9", + "php": "^7.1.3", "psr/log": "~1.0" }, "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "symfony/http-kernel": "<3.4" }, "require-dev": { - "symfony/class-loader": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0" + "symfony/http-kernel": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2271,31 +2339,34 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2016-09-30 10:45:11" + "time": "2017-08-10 14:21:53" }, { "name": "symfony/event-dispatcher", - "version": "dev-master", + "version": "3.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "e8f47a327c2f0fd5aa04fa60af2b693006ed7283" + "reference": "cd8b015f859e6b60933324db00067c2f060b4d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e8f47a327c2f0fd5aa04fa60af2b693006ed7283", - "reference": "e8f47a327c2f0fd5aa04fa60af2b693006ed7283", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/cd8b015f859e6b60933324db00067c2f060b4d18", + "reference": "cd8b015f859e6b60933324db00067c2f060b4d18", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^5.5.9|>=7.0.8" + }, + "conflict": { + "symfony/dependency-injection": "<3.3" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0" + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0" }, "suggest": { "symfony/dependency-injection": "", @@ -2304,7 +2375,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2331,29 +2402,29 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2016-10-13 06:29:04" + "time": "2017-08-03 09:34:20" }, { "name": "symfony/finder", - "version": "dev-master", + "version": "3.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "df6823821a90eec42c3040b4b06ba8b2af89ae30" + "reference": "bf0450cfe7282c5f06539c4733ba64273e91e918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/df6823821a90eec42c3040b4b06ba8b2af89ae30", - "reference": "df6823821a90eec42c3040b4b06ba8b2af89ae30", + "url": "https://api.github.com/repos/symfony/finder/zipball/bf0450cfe7282c5f06539c4733ba64273e91e918", + "reference": "bf0450cfe7282c5f06539c4733ba64273e91e918", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2380,7 +2451,7 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2016-09-28 00:11:20" + "time": "2017-08-03 09:34:20" }, { "name": "symfony/polyfill-mbstring", @@ -2388,12 +2459,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "53ad9faffe141fbe8f98cd6a7fd9a5e84513f56c" + "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/53ad9faffe141fbe8f98cd6a7fd9a5e84513f56c", - "reference": "53ad9faffe141fbe8f98cd6a7fd9a5e84513f56c", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7c8fae0ac1d216eb54349e6a8baa57d515fe8803", + "reference": "7c8fae0ac1d216eb54349e6a8baa57d515fe8803", "shasum": "" }, "require": { @@ -2405,7 +2476,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.5-dev" } }, "autoload": { @@ -2439,29 +2510,29 @@ "portable", "shim" ], - "time": "2016-08-30 17:06:17" + "time": "2017-06-14 15:44:48" }, { "name": "symfony/process", - "version": "dev-master", + "version": "3.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "fbaacdfc701a0ad50622eee45cfa2112f0ee144e" + "reference": "9794f948d9af3be0157185051275d78b24d68b92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/fbaacdfc701a0ad50622eee45cfa2112f0ee144e", - "reference": "fbaacdfc701a0ad50622eee45cfa2112f0ee144e", + "url": "https://api.github.com/repos/symfony/process/zipball/9794f948d9af3be0157185051275d78b24d68b92", + "reference": "9794f948d9af3be0157185051275d78b24d68b92", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2488,27 +2559,27 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2016-10-01 14:21:27" + "time": "2017-08-03 09:34:20" }, { "name": "symfony/yaml", - "version": "dev-master", + "version": "3.4.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "f3abbc0c63c0c7803db79a7398bb983e5b089f53" + "reference": "1395ddba6f65bf46cdf1d80d59223cbab8ff3ccc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/f3abbc0c63c0c7803db79a7398bb983e5b089f53", - "reference": "f3abbc0c63c0c7803db79a7398bb983e5b089f53", + "url": "https://api.github.com/repos/symfony/yaml/zipball/1395ddba6f65bf46cdf1d80d59223cbab8ff3ccc", + "reference": "1395ddba6f65bf46cdf1d80d59223cbab8ff3ccc", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^5.5.9|>=7.0.8" }, "require-dev": { - "symfony/console": "~2.8|~3.0" + "symfony/console": "~2.8|~3.0|~4.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -2516,7 +2587,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2543,7 +2614,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-09-28 14:20:56" + "time": "2017-08-04 13:29:48" }, { "name": "webmozart/assert", @@ -2551,12 +2622,12 @@ "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "c0c92082a2ffef8fab7941d4f6fd6a6a72ed627c" + "reference": "4a8bf11547e139e77b651365113fc12850c43d9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/c0c92082a2ffef8fab7941d4f6fd6a6a72ed627c", - "reference": "c0c92082a2ffef8fab7941d4f6fd6a6a72ed627c", + "url": "https://api.github.com/repos/webmozart/assert/zipball/4a8bf11547e139e77b651365113fc12850c43d9a", + "reference": "4a8bf11547e139e77b651365113fc12850c43d9a", "shasum": "" }, "require": { @@ -2569,7 +2640,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -2593,7 +2664,261 @@ "check", "validate" ], - "time": "2016-10-17 06:50:33" + "time": "2016-11-23 20:04:41" + }, + { + "name": "zendframework/zend-filter", + "version": "dev-develop", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-filter.git", + "reference": "5820559b511f2a520c553a02a90bfd9f8eb74a26" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/5820559b511f2a520c553a02a90bfd9f8eb74a26", + "reference": "5820559b511f2a520c553a02a90bfd9f8eb74a26", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "pear/archive_tar": "^1.4", + "phpunit/phpunit": "^6.0.10 || ^5.7.17", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-crypt": "^2.6 || ^3.0", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-uri": "^2.5" + }, + "suggest": { + "zendframework/zend-crypt": "Zend\\Crypt component, for encryption filters", + "zendframework/zend-i18n": "Zend\\I18n component for filters depending on i18n functionality", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for using the filter chain functionality", + "zendframework/zend-uri": "Zend\\Uri component, for the UriNormalize filter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev", + "dev-develop": "2.8-dev" + }, + "zf": { + "component": "Zend\\Filter", + "config-provider": "Zend\\Filter\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Filter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a set of commonly needed data filters", + "homepage": "https://github.com/zendframework/zend-filter", + "keywords": [ + "filter", + "zf2" + ], + "time": "2017-05-17 20:58:27" + }, + { + "name": "zendframework/zend-form", + "version": "2.10.2", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-form.git", + "reference": "252db729887844025772bb8045f8df605850ed9c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-form/zipball/252db729887844025772bb8045f8df605850ed9c", + "reference": "252db729887844025772bb8045f8df605850ed9c", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^5.6", + "zendframework/zend-hydrator": "^1.1 || ^2.1", + "zendframework/zend-inputfilter": "^2.6", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "zendframework/zend-cache": "^2.6.1", + "zendframework/zend-captcha": "^2.7.1", + "zendframework/zend-code": "^2.6 || ^3.0", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-escaper": "^2.5", + "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", + "zendframework/zend-filter": "^2.6", + "zendframework/zend-i18n": "^2.6", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-session": "^2.6.2", + "zendframework/zend-text": "^2.6", + "zendframework/zend-validator": "^2.6", + "zendframework/zend-view": "^2.6.2", + "zendframework/zendservice-recaptcha": "^3.0.0" + }, + "suggest": { + "zendframework/zend-captcha": "^2.7.1, required for using CAPTCHA form elements", + "zendframework/zend-code": "^2.6 || ^3.0, required to use zend-form annotations support", + "zendframework/zend-eventmanager": "^2.6.2 || ^3.0, reuired for zend-form annotations support", + "zendframework/zend-i18n": "^2.6, required when using zend-form view helpers", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3, required to use the form factories or provide services", + "zendframework/zend-view": "^2.6.2, required for using the zend-form view helpers", + "zendframework/zendservice-recaptcha": "in order to use the ReCaptcha form element" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10-dev", + "dev-develop": "2.11-dev" + }, + "zf": { + "component": "Zend\\Form", + "config-provider": "Zend\\Form\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Form\\": "src/" + }, + "files": [ + "autoload/formElementManagerPolyfill.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-form", + "keywords": [ + "form", + "zf2" + ], + "time": "2017-05-18T14:59:53+00:00" + }, + { + "name": "zendframework/zend-hydrator", + "version": "dev-develop", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-hydrator.git", + "reference": "f23dbf7a295dcfe579da435b8793add2ec4133fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/f23dbf7a295dcfe579da435b8793add2ec4133fc", + "reference": "f23dbf7a295dcfe579da435b8793add2ec4133fc", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^5.6", + "zendframework/zend-stdlib": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0.10 || ^5.7.17", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-eventmanager": "^3.0", + "zendframework/zend-filter": "^2.6", + "zendframework/zend-inputfilter": "^2.6", + "zendframework/zend-serializer": "^2.6.1", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" + }, + "suggest": { + "zendframework/zend-eventmanager": "^2.6.2 || ^3.0, to support aggregate hydrator usage", + "zendframework/zend-filter": "^2.6, to support naming strategy hydrator usage", + "zendframework/zend-serializer": "^2.6.1, to use the SerializableStrategy", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3, to support hydrator plugin manager usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-release-1.0": "1.0-dev", + "dev-release-1.1": "1.1-dev", + "dev-master": "2.2-dev", + "dev-develop": "2.3-dev" + }, + "zf": { + "component": "Zend\\Hydrator", + "config-provider": "Zend\\Hydrator\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Hydrator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-hydrator", + "keywords": [ + "hydrator", + "zf2" + ], + "time": "2017-05-17 18:42:34" + }, + { + "name": "zendframework/zend-inputfilter", + "version": "dev-develop", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-inputfilter.git", + "reference": "fa46dcda2c46235c9ba8c8b12a73eb6e2cf5b57f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/fa46dcda2c46235c9ba8c8b12a73eb6e2cf5b57f", + "reference": "fa46dcda2c46235c9ba8c8b12a73eb6e2cf5b57f", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^5.6", + "zendframework/zend-filter": "^2.6", + "zendframework/zend-stdlib": "^2.7 || ^3.0", + "zendframework/zend-validator": "^2.6" + }, + "require-dev": { + "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" + }, + "suggest": { + "zendframework/zend-servicemanager": "To support plugin manager support" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev", + "dev-develop": "2.8-dev" + }, + "zf": { + "component": "Zend\\InputFilter", + "config-provider": "Zend\\InputFilter\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\InputFilter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-inputfilter", + "keywords": [ + "inputfilter", + "zf2" + ], + "time": "2017-05-18 14:22:12" } ], "aliases": [], @@ -2605,6 +2930,7 @@ "zendframework/zend-config": 0, "doctrine/annotations": 0, "phpspec/phpspec": 0, + "zendframework/zend-form": 0, "henrikbjorn/phpspec-code-coverage": 0, "codacy/coverage": 20 }, diff --git a/phpspec.yml b/phpspec.yml index 45c96f1..095708a 100644 --- a/phpspec.yml +++ b/phpspec.yml @@ -4,13 +4,14 @@ suites: spec_prefix: Spec src_path: src spec_path: bundle -#extensions: -# PhpSpecCodeCoverage\CodeCoverageExtension: -# format: -# - html -# - clover -# output: -# html: build/coverage -# clover: build/coverage.xml -# whitelist: -# - src \ No newline at end of file +bootstrap: bundle/Spec/CirclicalAutoWire/bootstrap.php +extensions: + PhpSpecCodeCoverage\CodeCoverageExtension: + format: + - html + - clover + output: + html: build/coverage + clover: build/coverage.xml + whitelist: + - src \ No newline at end of file diff --git a/src/CirclicalAutoWire/Annotations/Route.php b/src/CirclicalAutoWire/Annotations/Route.php index ec06740..b0245a2 100644 --- a/src/CirclicalAutoWire/Annotations/Route.php +++ b/src/CirclicalAutoWire/Annotations/Route.php @@ -44,6 +44,11 @@ final class Route */ public $parent; + /** + * @var int + */ + public $priority; + public function setPrefix($path) { diff --git a/src/CirclicalAutoWire/Factory/Controller/ReflectionFactory.php b/src/CirclicalAutoWire/Factory/Controller/ReflectionFactory.php index a953141..19846f7 100644 --- a/src/CirclicalAutoWire/Factory/Controller/ReflectionFactory.php +++ b/src/CirclicalAutoWire/Factory/Controller/ReflectionFactory.php @@ -43,7 +43,7 @@ public function __invoke(ContainerInterface $container, $requestedName, array $o } try { - if (preg_match("/^([[:alpha:]]+)\\\\Form\\\\/us", $className)) { + if (preg_match("/([[:alpha:]]+)\\\\Form\\\\/us", $className)) { $parameterInstances[] = $parentLocator->get('FormElementManager')->get($className); } else { $parameterInstances[] = $parentLocator->get($className); diff --git a/src/CirclicalAutoWire/Model/AnnotatedRoute.php b/src/CirclicalAutoWire/Model/AnnotatedRoute.php index ab90b64..3b34bde 100644 --- a/src/CirclicalAutoWire/Model/AnnotatedRoute.php +++ b/src/CirclicalAutoWire/Model/AnnotatedRoute.php @@ -44,7 +44,7 @@ public function __construct(Route $route, string $controller, string $action) public function toArray(): array { $route = [ - 'type' => $this->type ?? $this->identifyRoute($this->route->value), + 'type' => $this->type ?? $this->route->type ?? $this->identifyRoute($this->route->value), 'options' => [ 'route' => $this->route->value, 'defaults' => [ @@ -62,6 +62,10 @@ public function toArray(): array $route['options']['defaults'] = $this->route->defaults; } + if($this->route->priority){ + $route['priority'] = $this->route->priority; + } + if ($this->children) { if ($this->route->terminate) { $route['may_terminate'] = $this->route->terminate; @@ -85,4 +89,4 @@ private function identifyRoute(string $route): string return Literal::class; } -} \ No newline at end of file +} diff --git a/src/CirclicalAutoWire/Module.php b/src/CirclicalAutoWire/Module.php index 3b5d409..5a878fb 100644 --- a/src/CirclicalAutoWire/Module.php +++ b/src/CirclicalAutoWire/Module.php @@ -44,7 +44,11 @@ public function configMerge(ModuleEvent $e) if (Console::isConsole() || $configuration['circlical']['autowire']['production_mode']) { if (file_exists($configuration['circlical']['autowire']['compile_to'])) { $autowiredRoutes = include $configuration['circlical']['autowire']['compile_to']; - $configuration['router']['routes'] = array_merge($configuration['router']['routes'], $autowiredRoutes); + if (isset($configuration['router']['routes'])) { + $configuration['router']['routes'] = array_merge($configuration['router']['routes'], $autowiredRoutes); + } else { + $configuration['router']['routes'] = $autowiredRoutes; + } $configListener->setMergedConfig($configuration); } } @@ -71,7 +75,7 @@ public function onBootstrap(MvcEvent $mvcEvent) $controllerClasses = []; foreach ($directoryScanner->getClassNames() as $className) { - if (strstr($className, '\\Controller\\')) { + if (false !== strpos($className, '\\Controller\\')) { $controllerClasses[] = $className; } } diff --git a/src/CirclicalAutoWire/Service/RouterService.php b/src/CirclicalAutoWire/Service/RouterService.php index 6279102..7b8d838 100644 --- a/src/CirclicalAutoWire/Service/RouterService.php +++ b/src/CirclicalAutoWire/Service/RouterService.php @@ -43,6 +43,11 @@ public function reset() $this->annotations = []; } + public function getAnnotations(): array + { + return $this->annotations; + } + /** * Parse a controller, storing results into the 'annotations' class variable * @@ -51,6 +56,7 @@ public function reset() public function parseController(string $controllerClass) { $class = new \ReflectionClass($controllerClass); + /** @var Route $classAnnotation */ $classAnnotation = $this->reader->getClassAnnotation($class, Route::class); // First, get all annotations for this controller @@ -58,9 +64,13 @@ public function parseController(string $controllerClass) /** @var \ReflectionMethod $method */ foreach ($class->getMethods() as $method) { if ($method->getDeclaringClass()->getName() == $controllerClass) { - $set = $this->reader->getMethodAnnotations($method, Route::class); + $set = $this->reader->getMethodAnnotations($method); /** @var Route $routerAnnotation */ foreach ($set as $routerAnnotation) { + if (!$routerAnnotation instanceof Route) { + continue; + } + if ($classAnnotation) { $routerAnnotation->setPrefix($classAnnotation->value); } @@ -111,6 +121,15 @@ public function compile(): array $routeConfig[$routeName] = $routeParams; } + // Sort them Segment first, Literal last (for LIFO) and by length + uasort($routeConfig, function (array $a, array $b) { + if ($a['type'] === $b['type']) { + return strlen($a['options']['route']) - strlen($b['options']['route']); + } + + return -1 * ($a['type'] <=> $b['type']); + }); + return $routeConfig; } } \ No newline at end of file