From 3a1a39782aa557ed75c5690130a505b21897b1fd Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Sat, 13 Oct 2018 15:10:54 +0200 Subject: [PATCH 01/20] PHPStan fixes --- src/Controller/AbstractActionController.php | 5 + src/Controller/AbstractController.php | 2 +- src/Controller/AbstractRestfulController.php | 93 +++++++++++++------ src/Controller/ControllerManager.php | 2 +- .../Plugin/AcceptableViewModelSelector.php | 31 +++++-- src/Controller/Plugin/Forward.php | 26 ++++-- src/Controller/Plugin/Params.php | 47 +++++++--- src/Controller/Plugin/Url.php | 5 +- src/Controller/PluginManager.php | 3 +- src/DispatchListener.php | 16 ++-- src/HttpMethodListener.php | 8 +- src/MiddlewareListener.php | 32 +++++-- src/ModuleRouteListener.php | 1 - src/ResponseSender/AbstractResponseSender.php | 8 ++ src/ResponseSender/HttpResponseSender.php | 4 +- .../PhpEnvironmentResponseSender.php | 4 +- .../SimpleStreamResponseSender.php | 8 ++ src/SendResponseListener.php | 4 +- src/Service/ApplicationFactory.php | 6 ++ src/Service/ControllerManagerFactory.php | 2 +- src/Service/ServiceListenerFactory.php | 18 +++- src/Service/ViewHelperManagerFactory.php | 5 +- src/View/Http/DefaultRenderingStrategy.php | 3 +- src/View/Http/ExceptionStrategy.php | 5 +- .../Http/InjectRoutematchParamsListener.php | 7 +- src/View/Http/InjectTemplateListener.php | 12 ++- src/View/Http/RouteNotFoundStrategy.php | 13 +++ src/View/Http/ViewManager.php | 28 ++++-- 28 files changed, 292 insertions(+), 106 deletions(-) diff --git a/src/Controller/AbstractActionController.php b/src/Controller/AbstractActionController.php index 54277ab31..0da35ff3d 100644 --- a/src/Controller/AbstractActionController.php +++ b/src/Controller/AbstractActionController.php @@ -42,6 +42,11 @@ public function notFoundAction() { $event = $this->getEvent(); $routeMatch = $event->getRouteMatch(); + + if (null === $routeMatch) { + throw new Exception\RuntimeException('Event does not have a RouteMatch'); + } + $routeMatch->setParam('action', 'not-found'); $helper = $this->plugin('createHttpNotFoundModel'); diff --git a/src/Controller/AbstractController.php b/src/Controller/AbstractController.php index da634c5c6..5c236cdeb 100644 --- a/src/Controller/AbstractController.php +++ b/src/Controller/AbstractController.php @@ -55,7 +55,7 @@ abstract class AbstractController implements protected $response; /** - * @var Event + * @var MvcEvent */ protected $event; diff --git a/src/Controller/AbstractRestfulController.php b/src/Controller/AbstractRestfulController.php index cff21f6db..be8ca5cb8 100644 --- a/src/Controller/AbstractRestfulController.php +++ b/src/Controller/AbstractRestfulController.php @@ -6,10 +6,13 @@ */ namespace Zend\Mvc\Controller; +use Zend\Http\AbstractMessage; use Zend\Http\Request as HttpRequest; +use Zend\Http\Response as HttpResponse; use Zend\Json\Json; use Zend\Mvc\Exception; use Zend\Mvc\MvcEvent; +use Zend\Router\RouteMatch; use Zend\Stdlib\RequestInterface as Request; use Zend\Stdlib\ResponseInterface as Response; @@ -90,6 +93,20 @@ public function getIdentifierName() return $this->identifierName; } + /** + * @return HttpResponse + */ + private function getHttpResponse() + { + $response = $this->getResponse(); + + if (! $response instanceof HttpResponse) { + throw new Exception\RuntimeException('Response is not an instance of ' . HttpResponse::class); + } + + return $response; + } + /** * Create a new resource * @@ -98,7 +115,7 @@ public function getIdentifierName() */ public function create($data) { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -113,7 +130,7 @@ public function create($data) */ public function delete($id) { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -130,7 +147,7 @@ public function delete($id) */ public function deleteList($data) { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -145,7 +162,7 @@ public function deleteList($data) */ public function get($id) { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -159,7 +176,7 @@ public function get($id) */ public function getList() { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -177,7 +194,7 @@ public function getList() */ public function head($id = null) { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -197,7 +214,7 @@ public function head($id = null) */ public function options() { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -210,13 +227,13 @@ public function options() * Not marked as abstract, as that would introduce a BC break * (introduced in 2.1.0); instead, raises an exception if not implemented. * - * @param $id - * @param $data + * @param mixed $id + * @param mixed $data * @return array */ public function patch($id, $data) { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -234,7 +251,7 @@ public function patch($id, $data) */ public function replaceList($data) { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -252,7 +269,7 @@ public function replaceList($data) */ public function patchList($data) { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -268,7 +285,7 @@ public function patchList($data) */ public function update($id, $data) { - $this->response->setStatusCode(405); + $this->getHttpResponse()->setStatusCode(405); return [ 'content' => 'Method Not Allowed' @@ -282,7 +299,7 @@ public function update($id, $data) */ public function notFoundAction() { - $this->response->setStatusCode(404); + $this->getHttpResponse()->setStatusCode(404); return [ 'content' => 'Page not found' @@ -332,6 +349,20 @@ public function onDispatch(MvcEvent $e) $request = $e->getRequest(); + if (! $request instanceof HttpRequest) { + throw new Exception\RuntimeException( + 'Request is not an instance of ' . HttpRequest::class + ); + } + + $response = $e->getResponse(); + + if (! $response instanceof HttpResponse) { + throw new Exception\RuntimeException( + 'Request is not an instance of ' . HttpRequest::class + ); + } + // Was an "action" requested? $action = $routeMatch->getParam('action', false); if ($action) { @@ -352,7 +383,7 @@ public function onDispatch(MvcEvent $e) case (isset($this->customHttpMethodsMap[$method])): $callable = $this->customHttpMethodsMap[$method]; $action = $method; - $return = call_user_func($callable, $e); + $return = $callable($e); break; // DELETE case 'delete': @@ -388,15 +419,15 @@ public function onDispatch(MvcEvent $e) } $action = 'head'; $headResult = $this->head($id); - $response = ($headResult instanceof Response) ? clone $headResult : $e->getResponse(); - $response->setContent(''); - $return = $response; + $resultResponse = ($headResult instanceof Response) ? clone $headResult : $response; + $resultResponse->setContent(''); + $return = $resultResponse; break; // OPTIONS case 'options': $action = 'options'; $this->options(); - $return = $e->getResponse(); + $return = $response; break; // PATCH case 'patch': @@ -416,7 +447,6 @@ public function onDispatch(MvcEvent $e) $action = 'patchList'; $return = $this->patchList($data); } catch (Exception\RuntimeException $ex) { - $response = $e->getResponse(); $response->setStatusCode(405); return $response; } @@ -442,7 +472,6 @@ public function onDispatch(MvcEvent $e) break; // All others... default: - $response = $e->getResponse(); $response->setStatusCode(405); return $response; } @@ -462,6 +491,12 @@ public function onDispatch(MvcEvent $e) */ public function processPostData(Request $request) { + if (! $request instanceof HttpRequest) { + throw new Exception\InvalidArgumentException( + 'Request is not an instance of ' . HttpRequest::class + ); + } + if ($this->requestHasContentType($request, self::CONTENT_TYPE_JSON)) { return $this->create($this->jsonDecode($request->getContent())); } @@ -478,7 +513,13 @@ public function processPostData(Request $request) */ public function requestHasContentType(Request $request, $contentType = '') { - /** @var $headerContentType \Zend\Http\Header\ContentType */ + if (! $request instanceof HttpRequest) { + throw new Exception\InvalidArgumentException( + 'Request is not an instance of ' . HttpRequest::class + ); + } + + /** @var \Zend\Http\Header\ContentType $headerContentType */ $headerContentType = $request->getHeaders()->get('content-type'); if (! $headerContentType) { return false; @@ -546,11 +587,11 @@ public function addHttpMethodHandler($method, /* Callable */ $handler) * Attempts to see if an identifier was passed in either the URI or the * query string, returning it if found. Otherwise, returns a boolean false. * - * @param \Zend\Router\RouteMatch $routeMatch - * @param Request $request + * @param RouteMatch $routeMatch + * @param HttpRequest $request * @return false|mixed */ - protected function getIdentifier($routeMatch, $request) + protected function getIdentifier(RouteMatch $routeMatch, HttpRequest $request) { $identifier = $this->getIdentifierName(); $id = $routeMatch->getParam($identifier, false); @@ -611,7 +652,7 @@ protected function processBodyContent($request) * * Marked protected to allow usage from extending classes. * - * @param string + * @param string $string * @return mixed * @throws Exception\DomainException if no JSON decoding functionality is * available. diff --git a/src/Controller/ControllerManager.php b/src/Controller/ControllerManager.php index 20e721655..ffc39e63d 100644 --- a/src/Controller/ControllerManager.php +++ b/src/Controller/ControllerManager.php @@ -42,7 +42,7 @@ class ControllerManager extends AbstractPluginManager * Injects an initializer for injecting controllers with an * event manager and plugin manager. * - * @param ConfigInterface|ContainerInterface $container + * @param ConfigInterface|ContainerInterface $configOrContainerInstance * @param array $config */ public function __construct($configOrContainerInstance, array $config = []) diff --git a/src/Controller/Plugin/AcceptableViewModelSelector.php b/src/Controller/Plugin/AcceptableViewModelSelector.php index 7a7a5efe7..b6dfc0ea2 100644 --- a/src/Controller/Plugin/AcceptableViewModelSelector.php +++ b/src/Controller/Plugin/AcceptableViewModelSelector.php @@ -8,12 +8,14 @@ namespace Zend\Mvc\Controller\Plugin; use Zend\Http\Header\Accept\FieldValuePart\AbstractFieldValuePart; +use Zend\Http\Headers; use Zend\Http\Request; use Zend\Mvc\InjectApplicationEventInterface; use Zend\Mvc\MvcEvent; use Zend\Mvc\Exception\DomainException; use Zend\Mvc\Exception\InvalidArgumentException; use Zend\View\Model\ModelInterface; +use Zend\View\Model\ViewModel; /** * Controller Plugin to assist in selecting an appropriate View Model type based on the @@ -42,7 +44,7 @@ class AcceptableViewModelSelector extends AbstractPlugin /** * Default array to match against. * - * @var Array + * @var array|null */ protected $defaultMatchAgainst; @@ -50,7 +52,7 @@ class AcceptableViewModelSelector extends AbstractPlugin * * @var string Default ViewModel */ - protected $defaultViewModelName = 'Zend\View\Model\ViewModel'; + protected $defaultViewModelName = ViewModel::class; /** * Detects an appropriate viewmodel for request. @@ -86,14 +88,22 @@ public function getViewModel( $name = $this->getViewModelName($matchAgainst, $returnDefault, $resultReference); if (! $name) { - return; + return null; } if (! class_exists($name)) { throw new InvalidArgumentException('The supplied View Model could not be found'); } - return new $name(); + $viewModel = new $name(); + + if (! $viewModel instanceof ModelInterface) { + throw new InvalidArgumentException( + 'The supplied View Model is not an instance of ' . ModelInterface::class + ); + } + + return $viewModel; } /** @@ -102,7 +112,7 @@ public function getViewModel( * @param array $matchAgainst (optional) The Array to match against * @param bool $returnDefault (optional) If no match is available. Return default instead * @param AbstractFieldValuePart|null $resultReference (optional) The object that was matched. - * @return ModelInterface|null Returns null if $returnDefault = false and no match could be made + * @return string|null Returns null if $returnDefault = false and no match could be made */ public function getViewModelName( array $matchAgainst = null, @@ -129,10 +139,11 @@ public function getViewModelName( public function match(array $matchAgainst = null) { $request = $this->getRequest(); + /** @var Headers $headers */ $headers = $request->getHeaders(); if ((! $matchAgainst && ! $this->defaultMatchAgainst) || ! $headers->has('accept')) { - return; + return null; } if (! $matchAgainst) { @@ -146,10 +157,10 @@ public function match(array $matchAgainst = null) } } - /** @var $accept \Zend\Http\Header\Accept */ + /** @var \Zend\Http\Header\Accept $accept */ $accept = $headers->get('Accept'); if (($res = $accept->match($matchAgainstString)) === false) { - return; + return null; } return $res; @@ -200,14 +211,14 @@ public function getDefaultMatchAgainst() /** * Inject the viewmodel name into the accept header string * - * @param string $modelAcceptString + * @param string|array $modelAcceptString * @param string $modelName * @return string */ protected function injectViewModelName($modelAcceptString, $modelName) { $modelName = str_replace('\\', '|', $modelName); - $modelAcceptString = (is_array($modelAcceptString)) + $modelAcceptString = is_array($modelAcceptString) ? $modelAcceptString[key($modelAcceptString)] : $modelAcceptString; return $modelAcceptString . '; ' . self::INJECT_VIEWMODEL_NAME . '="' . $modelName . '", '; diff --git a/src/Controller/Plugin/Forward.php b/src/Controller/Plugin/Forward.php index 32f2d8273..488c4a533 100644 --- a/src/Controller/Plugin/Forward.php +++ b/src/Controller/Plugin/Forward.php @@ -13,7 +13,8 @@ use Zend\Mvc\InjectApplicationEventInterface; use Zend\Mvc\MvcEvent; use Zend\Router\RouteMatch; -use Zend\Stdlib\CallbackHandler; +use Zend\Stdlib\DispatchableInterface; +use Zend\Mvc\View\Http\InjectViewModelListener; class Forward extends AbstractPlugin { @@ -40,7 +41,7 @@ class Forward extends AbstractPlugin /** * @var array[]|null */ - protected $listenersToDetach = null; + protected $listenersToDetach; /** * @param ControllerManager $controllers @@ -82,9 +83,9 @@ public function getListenersToDetach() // from getting attached to the ViewModel twice when a calling action // returns the output generated by a forwarded action. $this->listenersToDetach = [[ - 'id' => 'Zend\Stdlib\DispatchableInterface', + 'id' => DispatchableInterface::class, 'event' => MvcEvent::EVENT_DISPATCH, - 'class' => 'Zend\Mvc\View\Http\InjectViewModelListener', + 'class' => InjectViewModelListener::class, ]]; } return $this->listenersToDetach; @@ -115,7 +116,7 @@ public function setListenersToDetach($listeners) */ public function dispatch($name, array $params = null) { - $event = clone($this->getEvent()); + $event = clone $this->getEvent(); $controller = $this->controllers->get($name); if ($controller instanceof InjectApplicationEventInterface) { @@ -125,7 +126,13 @@ public function dispatch($name, array $params = null) // Allow passing parameters to seed the RouteMatch with & copy matched route name if ($params !== null) { $routeMatch = new RouteMatch($params); - $routeMatch->setMatchedRouteName($event->getRouteMatch()->getMatchedRouteName()); + $eventRouteMatch = $event->getRouteMatch(); + + if (! $eventRouteMatch) { + throw new Exception\RuntimeException('No route match on event'); + } + + $routeMatch->setMatchedRouteName($eventRouteMatch->getMatchedRouteName()); $event->setRouteMatch($routeMatch); } @@ -138,6 +145,11 @@ public function dispatch($name, array $params = null) // Detach listeners that may cause problems during dispatch: $sharedEvents = $event->getApplication()->getEventManager()->getSharedManager(); + + if (! $sharedEvents) { + throw new Exception\RuntimeException('No SharedEventManager set on application EventManager'); + } + $listeners = $this->detachProblemListeners($sharedEvents); $return = $controller->dispatch($event->getRequest(), $event->getResponse()); @@ -282,7 +294,7 @@ private function getSharedListenersById($id, $event, SharedEvents $sharedEvents) * Varies detachment based on zend-eventmanager version. * * @param string|int $id - * @param callable|CallbackHandler $listener + * @param callable $listener * @param SharedEvents $sharedEvents * @return void */ diff --git a/src/Controller/Plugin/Params.php b/src/Controller/Plugin/Params.php index eeed5456b..c79b768b1 100644 --- a/src/Controller/Plugin/Params.php +++ b/src/Controller/Plugin/Params.php @@ -7,11 +7,24 @@ namespace Zend\Mvc\Controller\Plugin; +use Zend\Mvc\Controller\AbstractController; use Zend\Mvc\Exception\RuntimeException; use Zend\Mvc\InjectApplicationEventInterface; +use Zend\Mvc\MvcEvent; class Params extends AbstractPlugin { + private function getPluginController() + { + $controller = $this->getController(); + + if (! $controller instanceof AbstractController) { + throw new RuntimeException('Controller is not an instance of ' . AbstractController::class); + } + + return $controller; + } + /** * Grabs a param from route match by default. * @@ -37,10 +50,10 @@ public function __invoke($param = null, $default = null) public function fromFiles($name = null, $default = null) { if ($name === null) { - return $this->getController()->getRequest()->getFiles($name, $default)->toArray(); + return $this->getPluginController()->getRequest()->getFiles($name, $default)->toArray(); } - return $this->getController()->getRequest()->getFiles($name, $default); + return $this->getPluginController()->getRequest()->getFiles($name, $default); } /** @@ -53,10 +66,10 @@ public function fromFiles($name = null, $default = null) public function fromHeader($header = null, $default = null) { if ($header === null) { - return $this->getController()->getRequest()->getHeaders($header, $default)->toArray(); + return $this->getPluginController()->getRequest()->getHeaders($header, $default)->toArray(); } - return $this->getController()->getRequest()->getHeaders($header, $default); + return $this->getPluginController()->getRequest()->getHeaders($header, $default); } /** @@ -69,10 +82,10 @@ public function fromHeader($header = null, $default = null) public function fromPost($param = null, $default = null) { if ($param === null) { - return $this->getController()->getRequest()->getPost($param, $default)->toArray(); + return $this->getPluginController()->getRequest()->getPost($param, $default)->toArray(); } - return $this->getController()->getRequest()->getPost($param, $default); + return $this->getPluginController()->getRequest()->getPost($param, $default); } /** @@ -85,10 +98,10 @@ public function fromPost($param = null, $default = null) public function fromQuery($param = null, $default = null) { if ($param === null) { - return $this->getController()->getRequest()->getQuery($param, $default)->toArray(); + return $this->getPluginController()->getRequest()->getQuery($param, $default)->toArray(); } - return $this->getController()->getRequest()->getQuery($param, $default); + return $this->getPluginController()->getRequest()->getQuery($param, $default); } /** @@ -101,7 +114,7 @@ public function fromQuery($param = null, $default = null) */ public function fromRoute($param = null, $default = null) { - $controller = $this->getController(); + $controller = $this->getPluginController(); if (! $controller instanceof InjectApplicationEventInterface) { throw new RuntimeException( @@ -109,10 +122,22 @@ public function fromRoute($param = null, $default = null) ); } + $event = $controller->getEvent(); + + if (! $event instanceof MvcEvent) { + throw new RuntimeException('Controller event is not an instance of ' . MvcEvent::class); + } + + $routeMatch = $event->getRouteMatch(); + + if (null === $routeMatch) { + throw new RuntimeException('Controller event has no RouteMatch'); + } + if ($param === null) { - return $controller->getEvent()->getRouteMatch()->getParams(); + return $routeMatch->getParams(); } - return $controller->getEvent()->getRouteMatch()->getParam($param, $default); + return $routeMatch->getParam($param, $default); } } diff --git a/src/Controller/Plugin/Url.php b/src/Controller/Plugin/Url.php index 7a050a175..36fb653a7 100644 --- a/src/Controller/Plugin/Url.php +++ b/src/Controller/Plugin/Url.php @@ -65,8 +65,11 @@ public function fromRoute($route = null, $params = [], $options = [], $reuseMatc ); } - if (3 == func_num_args() && is_bool($options)) { + if (3 === func_num_args() && is_bool($options)) { $reuseMatchedParams = $options; + } + + if (false === is_array($options)) { $options = []; } diff --git a/src/Controller/PluginManager.php b/src/Controller/PluginManager.php index 5a9295903..047d80e9a 100644 --- a/src/Controller/PluginManager.php +++ b/src/Controller/PluginManager.php @@ -7,6 +7,7 @@ namespace Zend\Mvc\Controller; +use Zend\Mvc\Controller\Plugin\PluginInterface; use Zend\ServiceManager\AbstractPluginManager; use Zend\ServiceManager\Exception\InvalidServiceException; use Zend\ServiceManager\Factory\InvokableFactory; @@ -137,7 +138,7 @@ public function injectController($plugin) } $controller = $this->getController(); - if (! $controller instanceof DispatchableInterface) { + if (! $controller instanceof DispatchableInterface || ! $plugin instanceof PluginInterface) { return; } diff --git a/src/DispatchListener.php b/src/DispatchListener.php index ed7c7fe68..7f75434db 100644 --- a/src/DispatchListener.php +++ b/src/DispatchListener.php @@ -10,6 +10,7 @@ use ArrayObject; use Zend\EventManager\AbstractListenerAggregate; use Zend\EventManager\EventManagerInterface; +use Zend\Mvc\Exception\RuntimeException; use Zend\Router\RouteMatch; use Zend\ServiceManager\Exception\InvalidServiceException; use Zend\Stdlib\ArrayUtils; @@ -75,7 +76,7 @@ public function attach(EventManagerInterface $events, $priority = 1) public function onDispatch(MvcEvent $e) { if (null !== $e->getResult()) { - return; + return null; } $routeMatch = $e->getRouteMatch(); @@ -83,14 +84,16 @@ public function onDispatch(MvcEvent $e) ? $routeMatch->getParam('controller', 'not-found') : 'not-found'; $application = $e->getApplication(); - $events = $application->getEventManager(); $controllerManager = $this->controllerManager; + if (! $application instanceof Application) { + throw new RuntimeException('Application is not an instance of ' . Application::class); + } // Query abstract controllers, too! if (! $controllerManager->has($controllerName)) { $return = $this->marshalControllerNotFoundEvent( - $application::ERROR_CONTROLLER_NOT_FOUND, + Application::ERROR_CONTROLLER_NOT_FOUND, $controllerName, $e, $application @@ -102,7 +105,7 @@ public function onDispatch(MvcEvent $e) $controller = $controllerManager->get($controllerName); } catch (Exception\InvalidControllerException $exception) { $return = $this->marshalControllerNotFoundEvent( - $application::ERROR_CONTROLLER_INVALID, + Application::ERROR_CONTROLLER_INVALID, $controllerName, $e, $application, @@ -111,7 +114,7 @@ public function onDispatch(MvcEvent $e) return $this->complete($return, $e); } catch (InvalidServiceException $exception) { $return = $this->marshalControllerNotFoundEvent( - $application::ERROR_CONTROLLER_INVALID, + Application::ERROR_CONTROLLER_INVALID, $controllerName, $e, $application, @@ -133,6 +136,7 @@ public function onDispatch(MvcEvent $e) $request = $e->getRequest(); $response = $application->getResponse(); $caughtException = null; + $return = null; try { $return = $controller->dispatch($request, $response); @@ -244,7 +248,7 @@ protected function marshalBadControllerEvent( $exception ) { $event->setName(MvcEvent::EVENT_DISPATCH_ERROR); - $event->setError($application::ERROR_EXCEPTION); + $event->setError(Application::ERROR_EXCEPTION); $event->setController($controllerName); $event->setParam('exception', $exception); diff --git a/src/HttpMethodListener.php b/src/HttpMethodListener.php index 77e8e007d..1cf3040b6 100644 --- a/src/HttpMethodListener.php +++ b/src/HttpMethodListener.php @@ -37,7 +37,7 @@ class HttpMethodListener extends AbstractListenerAggregate /** * @param bool $enabled - * @param array $allowedMethods + * @param array|null $allowedMethods */ public function __construct($enabled = true, $allowedMethods = []) { @@ -66,7 +66,7 @@ public function attach(EventManagerInterface $events, $priority = 1) /** * @param MvcEvent $e - * @return void|HttpResponse + * @return null|HttpResponse */ public function onRoute(MvcEvent $e) { @@ -74,13 +74,13 @@ public function onRoute(MvcEvent $e) $response = $e->getResponse(); if (! $request instanceof HttpRequest || ! $response instanceof HttpResponse) { - return; + return null; } $method = $request->getMethod(); if (in_array($method, $this->getAllowedMethods())) { - return; + return null; } $response->setStatusCode(405); diff --git a/src/MiddlewareListener.php b/src/MiddlewareListener.php index 618325451..d564a030e 100644 --- a/src/MiddlewareListener.php +++ b/src/MiddlewareListener.php @@ -11,15 +11,13 @@ use Interop\Http\ServerMiddleware\MiddlewareInterface; use Psr\Http\Message\ResponseInterface as PsrResponseInterface; use Psr\Http\Message\ResponseInterface; -use Psr\Http\Message\ServerRequestInterface as PsrServerRequestInterface; use Zend\EventManager\AbstractListenerAggregate; use Zend\EventManager\EventManagerInterface; +use Zend\Http\Response; use Zend\Mvc\Exception\InvalidMiddlewareException; -use Zend\Mvc\Exception\ReachedFinalHandlerException; use Zend\Mvc\Controller\MiddlewareController; +use Zend\Mvc\Exception\RuntimeException; use Zend\Psr7Bridge\Psr7Response; -use Zend\Router\RouteMatch; -use Zend\Stratigility\Delegate\CallableDelegateDecorator; use Zend\Stratigility\MiddlewarePipe; class MiddlewareListener extends AbstractListenerAggregate @@ -27,7 +25,8 @@ class MiddlewareListener extends AbstractListenerAggregate /** * Attach listeners to an event manager * - * @param EventManagerInterface $events + * @param EventManagerInterface $events + * @param int $priority * @return void */ public function attach(EventManagerInterface $events, $priority = 1) @@ -44,13 +43,18 @@ public function attach(EventManagerInterface $events, $priority = 1) public function onDispatch(MvcEvent $event) { if (null !== $event->getResult()) { - return; + return null; } $routeMatch = $event->getRouteMatch(); + + if (! $routeMatch) { + throw new RuntimeException('Event has no RouteMatch'); + } + $middleware = $routeMatch->getParam('middleware', false); if (false === $middleware) { - return; + return null; } $request = $event->getRequest(); @@ -58,6 +62,14 @@ public function onDispatch(MvcEvent $event) $response = $application->getResponse(); $serviceManager = $application->getServiceManager(); + if (! $application instanceof Application) { + throw new RuntimeException('Application is not an instance of ' . Application::class); + } + + if (! $response instanceof Response) { + throw new RuntimeException('Application response is not an instance of ' . Response::class); + } + $psr7ResponsePrototype = Psr7Response::fromZend($response); try { @@ -68,7 +80,7 @@ public function onDispatch(MvcEvent $event) ); } catch (InvalidMiddlewareException $invalidMiddlewareException) { $return = $this->marshalInvalidMiddleware( - $application::ERROR_MIDDLEWARE_CANNOT_DISPATCH, + Application::ERROR_MIDDLEWARE_CANNOT_DISPATCH, $invalidMiddlewareException->toMiddlewareName(), $event, $application, @@ -79,6 +91,8 @@ public function onDispatch(MvcEvent $event) } $caughtException = null; + $return = null; + try { $return = (new MiddlewareController( $pipe, @@ -94,7 +108,7 @@ public function onDispatch(MvcEvent $event) if ($caughtException !== null) { $event->setName(MvcEvent::EVENT_DISPATCH_ERROR); - $event->setError($application::ERROR_EXCEPTION); + $event->setError(Application::ERROR_EXCEPTION); $event->setParam('exception', $caughtException); $events = $application->getEventManager(); diff --git a/src/ModuleRouteListener.php b/src/ModuleRouteListener.php index 02fc72be9..5848b4da0 100644 --- a/src/ModuleRouteListener.php +++ b/src/ModuleRouteListener.php @@ -36,7 +36,6 @@ public function attach(EventManagerInterface $events, $priority = 1) * the matched controller parameter. * * @param MvcEvent $e - * @return null */ public function onRoute(MvcEvent $e) { diff --git a/src/ResponseSender/AbstractResponseSender.php b/src/ResponseSender/AbstractResponseSender.php index ed719d5d0..19533b8fd 100644 --- a/src/ResponseSender/AbstractResponseSender.php +++ b/src/ResponseSender/AbstractResponseSender.php @@ -7,7 +7,10 @@ namespace Zend\Mvc\ResponseSender; +use Zend\Http\Header\HeaderInterface; use Zend\Http\Header\MultipleHeaderInterface; +use Zend\Http\Response; +use Zend\Mvc\Exception\RuntimeException; abstract class AbstractResponseSender implements ResponseSenderInterface { @@ -25,11 +28,16 @@ public function sendHeaders(SendResponseEvent $event) $response = $event->getResponse(); + if (! $response instanceof Response) { + throw new RuntimeException('Event response should be an instance of ' . Response::class); + } + foreach ($response->getHeaders() as $header) { if ($header instanceof MultipleHeaderInterface) { header($header->toString(), false); continue; } + header($header->toString()); } diff --git a/src/ResponseSender/HttpResponseSender.php b/src/ResponseSender/HttpResponseSender.php index 1131cab3f..3257182f1 100644 --- a/src/ResponseSender/HttpResponseSender.php +++ b/src/ResponseSender/HttpResponseSender.php @@ -41,8 +41,8 @@ public function __invoke(SendResponseEvent $event) return $this; } - $this->sendHeaders($event) - ->sendContent($event); + $this->sendHeaders($event); + $this->sendContent($event); $event->stopPropagation(true); return $this; } diff --git a/src/ResponseSender/PhpEnvironmentResponseSender.php b/src/ResponseSender/PhpEnvironmentResponseSender.php index 5309e11f0..77ff0460f 100644 --- a/src/ResponseSender/PhpEnvironmentResponseSender.php +++ b/src/ResponseSender/PhpEnvironmentResponseSender.php @@ -24,8 +24,8 @@ public function __invoke(SendResponseEvent $event) return $this; } - $this->sendHeaders($event) - ->sendContent($event); + $this->sendHeaders($event); + $this->sendContent($event); $event->stopPropagation(true); return $this; } diff --git a/src/ResponseSender/SimpleStreamResponseSender.php b/src/ResponseSender/SimpleStreamResponseSender.php index 3d1be8f75..23a613d62 100644 --- a/src/ResponseSender/SimpleStreamResponseSender.php +++ b/src/ResponseSender/SimpleStreamResponseSender.php @@ -8,6 +8,7 @@ namespace Zend\Mvc\ResponseSender; use Zend\Http\Response\Stream; +use Zend\Mvc\Exception\RuntimeException; class SimpleStreamResponseSender extends AbstractResponseSender { @@ -23,9 +24,16 @@ public function sendStream(SendResponseEvent $event) return $this; } $response = $event->getResponse(); + + if (! $response instanceof Stream) { + throw new RuntimeException('Event is not an instance of ' . Stream::class); + } + $stream = $response->getStream(); fpassthru($stream); $event->setContentSent(); + + return $this; } /** diff --git a/src/SendResponseListener.php b/src/SendResponseListener.php index 1b939ef6e..373951d95 100644 --- a/src/SendResponseListener.php +++ b/src/SendResponseListener.php @@ -109,7 +109,7 @@ public function getEvent() * Set the send response event * * @param SendResponseEvent $e - * @return SendResponseEvent + * @return SendResponseListener */ public function setEvent(SendResponseEvent $e) { @@ -126,8 +126,6 @@ public function setEvent(SendResponseEvent $e) * You can attach your response sender before or after every default response sender implementation. * All default response sender implementation have negative priority. * You are able to attach listeners without giving a priority and your response sender would be first to try. - * - * @return SendResponseListener */ protected function attachDefaultListeners() { diff --git a/src/Service/ApplicationFactory.php b/src/Service/ApplicationFactory.php index 2871cc334..6918386d2 100644 --- a/src/Service/ApplicationFactory.php +++ b/src/Service/ApplicationFactory.php @@ -9,7 +9,9 @@ use Interop\Container\ContainerInterface; use Zend\Mvc\Application; +use Zend\Mvc\Exception\InvalidArgumentException; use Zend\ServiceManager\Factory\FactoryInterface; +use Zend\ServiceManager\ServiceManager; class ApplicationFactory implements FactoryInterface { @@ -26,6 +28,10 @@ class ApplicationFactory implements FactoryInterface */ public function __invoke(ContainerInterface $container, $name, array $options = null) { + if (! $container instanceof ServiceManager) { + throw new InvalidArgumentException('Container should be an instance of ' . ServiceManager::class); + } + return new Application( $container, $container->get('EventManager'), diff --git a/src/Service/ControllerManagerFactory.php b/src/Service/ControllerManagerFactory.php index a1dd50812..59330d9b2 100644 --- a/src/Service/ControllerManagerFactory.php +++ b/src/Service/ControllerManagerFactory.php @@ -24,7 +24,7 @@ class ControllerManagerFactory implements FactoryInterface * if the controller implements a setPluginManager() method. * * @param ContainerInterface $container - * @param string $Name + * @param string $name * @param null|array $options * @return ControllerManager */ diff --git a/src/Service/ServiceListenerFactory.php b/src/Service/ServiceListenerFactory.php index 4416fb6e8..8bd01e94f 100644 --- a/src/Service/ServiceListenerFactory.php +++ b/src/Service/ServiceListenerFactory.php @@ -15,6 +15,8 @@ use Zend\ServiceManager\Factory\FactoryInterface; use Zend\ServiceManager\Factory\InvokableFactory; use Zend\ServiceManager\ServiceLocatorInterface; +use Zend\ServiceManager\ServiceManager; +use Zend\Mvc\Exception; class ServiceListenerFactory implements FactoryInterface { @@ -112,7 +114,9 @@ class ServiceListenerFactory implements FactoryInterface * - interface: the name of the interface that modules can implement as string * - method: the name of the method that modules have to implement as string * - * @param ServiceLocatorInterface $serviceLocator + * @param ContainerInterface $container + * @param string $requestedName + * @param array|null $options * @return ServiceListenerInterface * @throws ServiceNotCreatedException for invalid ServiceListener service * @throws ServiceNotCreatedException For invalid configurations. @@ -121,9 +125,15 @@ public function __invoke(ContainerInterface $container, $requestedName, array $o { $configuration = $container->get('ApplicationConfig'); - $serviceListener = $container->has('ServiceListenerInterface') - ? $container->get('ServiceListenerInterface') - : new ServiceListener($container); + if ($container->has('ServiceListenerInterface')) { + $serviceListener = $container->get('ServiceListenerInterface'); + } elseif ($container instanceof ServiceManager) { + $serviceListener = new ServiceListener($container); + } else { + throw new Exception\InvalidArgumentException( + 'No service listener found in container. Unable to create a new one because $container should be an instance of ' . ServiceManager::class + ); + } if (! $serviceListener instanceof ServiceListenerInterface) { throw new ServiceNotCreatedException( diff --git a/src/Service/ViewHelperManagerFactory.php b/src/Service/ViewHelperManagerFactory.php index 371885b19..5c9aa512a 100644 --- a/src/Service/ViewHelperManagerFactory.php +++ b/src/Service/ViewHelperManagerFactory.php @@ -31,13 +31,16 @@ class ViewHelperManagerFactory extends AbstractPluginManagerFactory * Create and return the view helper manager * * @param ContainerInterface $container - * @return HelperPluginManager + * @param string $requestedName + * @param array|null $options * @throws ServiceNotCreatedException + * @return HelperPluginManager */ public function __invoke(ContainerInterface $container, $requestedName, array $options = null) { $options = $options ?: []; $options['factories'] = isset($options['factories']) ? $options['factories'] : []; + /** @var HelperPluginManager $plugins */ $plugins = parent::__invoke($container, $requestedName, $options); // Override plugin factories diff --git a/src/View/Http/DefaultRenderingStrategy.php b/src/View/Http/DefaultRenderingStrategy.php index 5031966c8..c11f6319c 100644 --- a/src/View/Http/DefaultRenderingStrategy.php +++ b/src/View/Http/DefaultRenderingStrategy.php @@ -33,7 +33,6 @@ class DefaultRenderingStrategy extends AbstractListenerAggregate * Set view * * @param View $view - * @return DefaultRenderingStrategy */ public function __construct(View $view) { @@ -90,7 +89,7 @@ public function render(MvcEvent $e) $response = $e->getResponse(); $viewModel = $e->getViewModel(); if (! $viewModel instanceof ViewModel) { - return; + return null; } $view = $this->view; diff --git a/src/View/Http/ExceptionStrategy.php b/src/View/Http/ExceptionStrategy.php index 440358210..f91be0ce3 100644 --- a/src/View/Http/ExceptionStrategy.php +++ b/src/View/Http/ExceptionStrategy.php @@ -11,6 +11,7 @@ use Zend\EventManager\EventManagerInterface; use Zend\Http\Response as HttpResponse; use Zend\Mvc\Application; +use Zend\Mvc\Exception\RuntimeException; use Zend\Mvc\MvcEvent; use Zend\Stdlib\ResponseInterface as Response; use Zend\View\Model\ViewModel; @@ -129,11 +130,13 @@ public function prepareExceptionViewModel(MvcEvent $e) $response = new HttpResponse(); $response->setStatusCode(500); $e->setResponse($response); - } else { + } elseif ($response instanceof HttpResponse) { $statusCode = $response->getStatusCode(); if ($statusCode === 200) { $response->setStatusCode(500); } + } else { + throw new RuntimeException('Event response is not an instance of ' . HttpResponse::class); } break; diff --git a/src/View/Http/InjectRoutematchParamsListener.php b/src/View/Http/InjectRoutematchParamsListener.php index adcaf29b9..09a8f6f39 100644 --- a/src/View/Http/InjectRoutematchParamsListener.php +++ b/src/View/Http/InjectRoutematchParamsListener.php @@ -11,6 +11,7 @@ use Zend\EventManager\EventManagerInterface; use Zend\Http\Request as HttpRequest; use Zend\Mvc\MvcEvent; +use Zend\Mvc\Exception; class InjectRoutematchParamsListener extends AbstractListenerAggregate { @@ -37,6 +38,10 @@ public function attach(EventManagerInterface $events, $priority = 1) */ public function injectParams(MvcEvent $e) { + if (! $e->getRouteMatch()) { + throw new Exception\RuntimeException('No RouteMatch in event'); + } + $routeMatchParams = $e->getRouteMatch()->getParams(); $request = $e->getRequest(); @@ -45,7 +50,7 @@ public function injectParams(MvcEvent $e) return; } - $params = $request->get(); + $params = $request->getQuery(); if ($this->overwrite) { // Overwrite existing parameters, or create new ones if not present. diff --git a/src/View/Http/InjectTemplateListener.php b/src/View/Http/InjectTemplateListener.php index 3b110a787..2c0c017d9 100644 --- a/src/View/Http/InjectTemplateListener.php +++ b/src/View/Http/InjectTemplateListener.php @@ -9,6 +9,7 @@ use Zend\EventManager\AbstractListenerAggregate; use Zend\EventManager\EventManagerInterface as Events; +use Zend\Mvc\Exception\RuntimeException; use Zend\Mvc\MvcEvent; use Zend\Stdlib\StringUtils; use Zend\View\Model\ModelInterface as ViewModel; @@ -59,6 +60,11 @@ public function injectTemplate(MvcEvent $e) } $routeMatch = $e->getRouteMatch(); + + if (null === $routeMatch) { + throw new RuntimeException('MvcEvent does not have a RouteMatch'); + } + if ($preferRouteMatchController = $routeMatch->getParam('prefer_route_match_controller', false)) { $this->setPreferRouteMatchController($preferRouteMatchController); } @@ -75,6 +81,10 @@ public function injectTemplate(MvcEvent $e) $template = $this->mapController($controller); + if (false === $template) { + throw new RuntimeException('Invalid controller name'); + } + $action = $routeMatch->getParam('action'); if (null !== $action) { $template .= '/' . $this->inflectName($action); @@ -173,7 +183,7 @@ protected function deriveControllerClass($controller) } if ((10 < strlen($controller)) - && ('Controller' == substr($controller, -10)) + && ('Controller' === substr($controller, -10)) ) { $controller = substr($controller, 0, -10); } diff --git a/src/View/Http/RouteNotFoundStrategy.php b/src/View/Http/RouteNotFoundStrategy.php index 12d397f92..e0e9c1772 100644 --- a/src/View/Http/RouteNotFoundStrategy.php +++ b/src/View/Http/RouteNotFoundStrategy.php @@ -11,6 +11,7 @@ use Zend\EventManager\EventManagerInterface; use Zend\Http\Response as HttpResponse; use Zend\Mvc\Application; +use Zend\Mvc\Exception\RuntimeException; use Zend\Mvc\MvcEvent; use Zend\Stdlib\ResponseInterface as Response; use Zend\View\Model\ViewModel; @@ -147,6 +148,13 @@ public function detectNotFoundError(MvcEvent $e) $response = new HttpResponse(); $e->setResponse($response); } + + if (! $response instanceof HttpResponse) { + throw new RuntimeException( + 'Event response should be an instance of ' . HttpResponse::class + ); + } + $response->setStatusCode(404); break; default: @@ -169,6 +177,11 @@ public function prepareNotFoundViewModel(MvcEvent $e) } $response = $e->getResponse(); + + if (! $response instanceof HttpResponse) { + throw new RuntimeException('Event response is not an instance of ' . HttpResponse::class); + } + if ($response->getStatusCode() != 404) { // Only handle 404 responses return; diff --git a/src/View/Http/ViewManager.php b/src/View/Http/ViewManager.php index 67802c5ac..7d7f0f9a6 100644 --- a/src/View/Http/ViewManager.php +++ b/src/View/Http/ViewManager.php @@ -13,8 +13,11 @@ use Zend\EventManager\EventManagerInterface; use Zend\EventManager\ListenerAggregateInterface; use Zend\Mvc\MvcEvent; -use Zend\ServiceManager\ServiceManager; +use Zend\ServiceManager\ServiceLocatorInterface; +use Zend\View\Helper\ViewModel; use Zend\View\View; +use Zend\Mvc\Exception; +use Zend\Stdlib\DispatchableInterface; /** * Prepares the view layer @@ -41,7 +44,7 @@ class ViewManager extends AbstractListenerAggregate { /** - * @var object application configuration service + * @var array|ArrayAccess application configuration service */ protected $config; @@ -51,7 +54,7 @@ class ViewManager extends AbstractListenerAggregate protected $event; /** - * @var ServiceManager + * @var ServiceLocatorInterface */ protected $services; @@ -79,7 +82,7 @@ public function attach(EventManagerInterface $events, $priority = 1) /** * Prepares the view layer * - * @param $event + * @param MvcEvent $event * @return void */ public function onBootstrap($event) @@ -104,7 +107,7 @@ public function onBootstrap($event) $this->injectViewModelIntoPlugin(); - $injectTemplateListener = $services->get('Zend\Mvc\View\Http\InjectTemplateListener'); + $injectTemplateListener = $services->get(InjectTemplateListener::class); $createViewModelListener = new CreateViewModelListener(); $injectViewModelListener = new InjectViewModelListener(); @@ -117,32 +120,36 @@ public function onBootstrap($event) $events->attach(MvcEvent::EVENT_RENDER_ERROR, [$injectViewModelListener, 'injectViewModel'], -100); $mvcRenderingStrategy->attach($events); + if (null === $sharedEvents) { + throw new Exception\RuntimeException('No SharedEventManager in application EventManager'); + } + $sharedEvents->attach( - 'Zend\Stdlib\DispatchableInterface', + DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, [$createViewModelListener, 'createViewModelFromArray'], -80 ); $sharedEvents->attach( - 'Zend\Stdlib\DispatchableInterface', + DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, [$routeNotFoundStrategy, 'prepareNotFoundViewModel'], -90 ); $sharedEvents->attach( - 'Zend\Stdlib\DispatchableInterface', + DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, [$createViewModelListener, 'createViewModelFromNull'], -80 ); $sharedEvents->attach( - 'Zend\Stdlib\DispatchableInterface', + DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, [$injectTemplateListener, 'injectTemplate'], -90 ); $sharedEvents->attach( - 'Zend\Stdlib\DispatchableInterface', + DispatchableInterface::class, MvcEvent::EVENT_DISPATCH, [$injectViewModelListener, 'injectViewModel'], -100 @@ -265,6 +272,7 @@ private function injectViewModelIntoPlugin() { $model = $this->getViewModel(); $plugins = $this->services->get('ViewHelperManager'); + /** @var ViewModel $plugin */ $plugin = $plugins->get('viewmodel'); $plugin->setRoot($model); } From 1808073f209f54718be7c29748d5c1aba1d424a3 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 14:52:20 +0200 Subject: [PATCH 02/20] Better exception messages --- src/Controller/AbstractRestfulController.php | 59 ++++++++++++++----- .../Plugin/AcceptableViewModelSelector.php | 9 ++- src/Controller/Plugin/Forward.php | 4 +- src/DispatchListener.php | 4 ++ src/Exception/UnexpectedValueException.php | 12 ++++ src/ResponseSender/AbstractResponseSender.php | 7 ++- .../SimpleStreamResponseSender.php | 8 ++- src/Service/ApplicationFactory.php | 6 +- src/View/Http/ExceptionStrategy.php | 7 ++- src/View/Http/InjectTemplateListener.php | 9 +-- src/View/Http/RouteNotFoundStrategy.php | 15 +++-- 11 files changed, 105 insertions(+), 35 deletions(-) create mode 100644 src/Exception/UnexpectedValueException.php diff --git a/src/Controller/AbstractRestfulController.php b/src/Controller/AbstractRestfulController.php index be8ca5cb8..6cef6d6b9 100644 --- a/src/Controller/AbstractRestfulController.php +++ b/src/Controller/AbstractRestfulController.php @@ -101,7 +101,11 @@ private function getHttpResponse() $response = $this->getResponse(); if (! $response instanceof HttpResponse) { - throw new Exception\RuntimeException('Response is not an instance of ' . HttpResponse::class); + throw new Exception\UnexpectedValueException(sprintf( + 'Response must be an instance of %s. %s given', + HttpResponse::class, + \is_object($response) ? \get_class($response) : \gettype($response) + )); } return $response; @@ -348,19 +352,22 @@ public function onDispatch(MvcEvent $e) } $request = $e->getRequest(); + $response = $e->getResponse(); if (! $request instanceof HttpRequest) { - throw new Exception\RuntimeException( - 'Request is not an instance of ' . HttpRequest::class - ); + throw new Exception\UnexpectedValueException(sprintf( + 'Request must be an instance of %s. %s given', + HttpRequest::class, + \is_object($request) ? \get_class($request) : \gettype($request) + )); } - $response = $e->getResponse(); - if (! $response instanceof HttpResponse) { - throw new Exception\RuntimeException( - 'Request is not an instance of ' . HttpRequest::class - ); + throw new Exception\UnexpectedValueException(sprintf( + 'Response must be an instance of %s. %s given', + HttpResponse::class, + \is_object($response) ? \get_class($response) : \gettype($response) + )); } // Was an "action" requested? @@ -492,9 +499,11 @@ public function onDispatch(MvcEvent $e) public function processPostData(Request $request) { if (! $request instanceof HttpRequest) { - throw new Exception\InvalidArgumentException( - 'Request is not an instance of ' . HttpRequest::class - ); + throw new Exception\InvalidArgumentException(sprintf( + 'Request must be an instance of %s. %s given', + HttpRequest::class, + \is_object($request) ? \get_class($request) : \gettype($request) + )); } if ($this->requestHasContentType($request, self::CONTENT_TYPE_JSON)) { @@ -514,9 +523,11 @@ public function processPostData(Request $request) public function requestHasContentType(Request $request, $contentType = '') { if (! $request instanceof HttpRequest) { - throw new Exception\InvalidArgumentException( - 'Request is not an instance of ' . HttpRequest::class - ); + throw new Exception\InvalidArgumentException(sprintf( + 'Request must be an instance of %s. %s given', + HttpRequest::class, + \is_object($request) ? \get_class($request) : \gettype($request) + )); } /** @var \Zend\Http\Header\ContentType $headerContentType */ @@ -591,8 +602,24 @@ public function addHttpMethodHandler($method, /* Callable */ $handler) * @param HttpRequest $request * @return false|mixed */ - protected function getIdentifier(RouteMatch $routeMatch, HttpRequest $request) + protected function getIdentifier($routeMatch, $request) { + if (! $routeMatch instanceof RouteMatch) { + throw new Exception\InvalidArgumentException(sprintf( + 'RouteMatch must be an instance of %s. %s given', + RouteMatch::class, + \is_object($routeMatch) ? \get_class($routeMatch) : \gettype($routeMatch) + )); + } + + if (! $request instanceof HttpRequest) { + throw new Exception\InvalidArgumentException(sprintf( + 'Request must be an instance of %s. %s given', + HttpRequest::class, + \is_object($request) ? \get_class($request) : \gettype($request) + )); + } + $identifier = $this->getIdentifierName(); $id = $routeMatch->getParam($identifier, false); if ($id !== false) { diff --git a/src/Controller/Plugin/AcceptableViewModelSelector.php b/src/Controller/Plugin/AcceptableViewModelSelector.php index b6dfc0ea2..31bfd3bb2 100644 --- a/src/Controller/Plugin/AcceptableViewModelSelector.php +++ b/src/Controller/Plugin/AcceptableViewModelSelector.php @@ -98,9 +98,12 @@ public function getViewModel( $viewModel = new $name(); if (! $viewModel instanceof ModelInterface) { - throw new InvalidArgumentException( - 'The supplied View Model is not an instance of ' . ModelInterface::class - ); + throw new InvalidArgumentException(sprintf( + 'The supplied View Model is not an instance of %s. %s created for "%s"', + ModelInterface::class, + \is_object($viewModel) ? \get_class($viewModel) : \gettype($viewModel), + $name + )); } return $viewModel; diff --git a/src/Controller/Plugin/Forward.php b/src/Controller/Plugin/Forward.php index 488c4a533..1a44c2a54 100644 --- a/src/Controller/Plugin/Forward.php +++ b/src/Controller/Plugin/Forward.php @@ -128,7 +128,7 @@ public function dispatch($name, array $params = null) $routeMatch = new RouteMatch($params); $eventRouteMatch = $event->getRouteMatch(); - if (! $eventRouteMatch) { + if (null === $eventRouteMatch) { throw new Exception\RuntimeException('No route match on event'); } @@ -146,7 +146,7 @@ public function dispatch($name, array $params = null) // Detach listeners that may cause problems during dispatch: $sharedEvents = $event->getApplication()->getEventManager()->getSharedManager(); - if (! $sharedEvents) { + if (null === $sharedEvents) { throw new Exception\RuntimeException('No SharedEventManager set on application EventManager'); } diff --git a/src/DispatchListener.php b/src/DispatchListener.php index 7f75434db..518666df6 100644 --- a/src/DispatchListener.php +++ b/src/DispatchListener.php @@ -167,6 +167,10 @@ public function onDispatch(MvcEvent $e) */ public function reportMonitorEvent(MvcEvent $e) { + if (! \function_exists('zend_monitor_custom_event_ex')) { + return; + } + $error = $e->getError(); $exception = $e->getParam('exception'); // @TODO clean up once PHP 7 requirement is enforced diff --git a/src/Exception/UnexpectedValueException.php b/src/Exception/UnexpectedValueException.php new file mode 100644 index 000000000..936b686c9 --- /dev/null +++ b/src/Exception/UnexpectedValueException.php @@ -0,0 +1,12 @@ +getResponse(); if (! $response instanceof Response) { - throw new RuntimeException('Event response should be an instance of ' . Response::class); + throw new UnexpectedValueException(sprintf( + 'Event response must be an instance of %s. %s given', + Response::class, + \is_object($response) ? \get_class($response) : \gettype($response) + )); } foreach ($response->getHeaders() as $header) { diff --git a/src/ResponseSender/SimpleStreamResponseSender.php b/src/ResponseSender/SimpleStreamResponseSender.php index 23a613d62..b43333fc9 100644 --- a/src/ResponseSender/SimpleStreamResponseSender.php +++ b/src/ResponseSender/SimpleStreamResponseSender.php @@ -9,6 +9,7 @@ use Zend\Http\Response\Stream; use Zend\Mvc\Exception\RuntimeException; +use Zend\Mvc\Exception\UnexpectedValueException; class SimpleStreamResponseSender extends AbstractResponseSender { @@ -23,10 +24,15 @@ public function sendStream(SendResponseEvent $event) if ($event->contentSent()) { return $this; } + $response = $event->getResponse(); if (! $response instanceof Stream) { - throw new RuntimeException('Event is not an instance of ' . Stream::class); + throw new UnexpectedValueException(sprintf( + 'Event response must be an instance of %s. %s given', + Stream::class, + \is_object($response) ? \get_class($response) : \gettype($response) + )); } $stream = $response->getStream(); diff --git a/src/Service/ApplicationFactory.php b/src/Service/ApplicationFactory.php index 6918386d2..c54ca3304 100644 --- a/src/Service/ApplicationFactory.php +++ b/src/Service/ApplicationFactory.php @@ -29,7 +29,11 @@ class ApplicationFactory implements FactoryInterface public function __invoke(ContainerInterface $container, $name, array $options = null) { if (! $container instanceof ServiceManager) { - throw new InvalidArgumentException('Container should be an instance of ' . ServiceManager::class); + throw new InvalidArgumentException(sprintf( + 'Container must be an instance of %s. %s given', + ServiceManager::class, + \is_object($container) ? \get_class($container) : \gettype($container) + )); } return new Application( diff --git a/src/View/Http/ExceptionStrategy.php b/src/View/Http/ExceptionStrategy.php index f91be0ce3..9d74b0cfa 100644 --- a/src/View/Http/ExceptionStrategy.php +++ b/src/View/Http/ExceptionStrategy.php @@ -12,6 +12,7 @@ use Zend\Http\Response as HttpResponse; use Zend\Mvc\Application; use Zend\Mvc\Exception\RuntimeException; +use Zend\Mvc\Exception\UnexpectedValueException; use Zend\Mvc\MvcEvent; use Zend\Stdlib\ResponseInterface as Response; use Zend\View\Model\ViewModel; @@ -136,7 +137,11 @@ public function prepareExceptionViewModel(MvcEvent $e) $response->setStatusCode(500); } } else { - throw new RuntimeException('Event response is not an instance of ' . HttpResponse::class); + throw new UnexpectedValueException(sprintf( + 'Event response must be an instance of %s. %s given', + HttpResponse::class, + \is_object($response) ? \get_class($response) : \gettype($response) + )); } break; diff --git a/src/View/Http/InjectTemplateListener.php b/src/View/Http/InjectTemplateListener.php index 2c0c017d9..7cb66283e 100644 --- a/src/View/Http/InjectTemplateListener.php +++ b/src/View/Http/InjectTemplateListener.php @@ -81,10 +81,6 @@ public function injectTemplate(MvcEvent $e) $template = $this->mapController($controller); - if (false === $template) { - throw new RuntimeException('Invalid controller name'); - } - $action = $routeMatch->getParam('action'); if (null !== $action) { $template .= '/' . $this->inflectName($action); @@ -109,7 +105,7 @@ public function setControllerMap(array $map) * Maps controller to template if controller namespace is whitelisted or mapped * * @param string $controller controller FQCN - * @return string|false template name or false if controller was not matched + * @return string template name or false if controller was not matched */ public function mapController($controller) { @@ -127,7 +123,8 @@ public function mapController($controller) // Map namespace to $replacement if its value is string if (is_string($replacement)) { $mapped = rtrim($replacement, '/') . '/'; - $controller = substr($controller, strlen($namespace) + 1) ?: ''; + $name = substr($controller, strlen($namespace) + 1); + $controller = \is_string($name) ? $name : ''; break; } } diff --git a/src/View/Http/RouteNotFoundStrategy.php b/src/View/Http/RouteNotFoundStrategy.php index e0e9c1772..71cdbfc73 100644 --- a/src/View/Http/RouteNotFoundStrategy.php +++ b/src/View/Http/RouteNotFoundStrategy.php @@ -12,6 +12,7 @@ use Zend\Http\Response as HttpResponse; use Zend\Mvc\Application; use Zend\Mvc\Exception\RuntimeException; +use Zend\Mvc\Exception\UnexpectedValueException; use Zend\Mvc\MvcEvent; use Zend\Stdlib\ResponseInterface as Response; use Zend\View\Model\ViewModel; @@ -150,9 +151,11 @@ public function detectNotFoundError(MvcEvent $e) } if (! $response instanceof HttpResponse) { - throw new RuntimeException( - 'Event response should be an instance of ' . HttpResponse::class - ); + throw new UnexpectedValueException(sprintf( + 'Event response must be an instance of %s. %s given', + HttpResponse::class, + \is_object($response) ? \get_class($response) : \gettype($response) + )); } $response->setStatusCode(404); @@ -179,7 +182,11 @@ public function prepareNotFoundViewModel(MvcEvent $e) $response = $e->getResponse(); if (! $response instanceof HttpResponse) { - throw new RuntimeException('Event response is not an instance of ' . HttpResponse::class); + throw new UnexpectedValueException(sprintf( + 'Event response must be an instance of %s. %s given', + HttpResponse::class, + \is_object($response) ? \get_class($response) : \gettype($response) + )); } if ($response->getStatusCode() != 404) { From 00dd89ce6c985b505ba7280b03d345382f089ce0 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 17:03:29 +0200 Subject: [PATCH 03/20] PHPStan 0.10 fixes --- src/Controller/AbstractController.php | 35 ++++++++++++------ src/Controller/AbstractRestfulController.php | 13 ++++--- src/Controller/ControllerManager.php | 2 ++ .../LazyControllerAbstractFactory.php | 12 ++++--- src/Controller/MiddlewareController.php | 2 +- .../Plugin/AcceptableViewModelSelector.php | 28 +++++++++++---- src/Controller/Plugin/Forward.php | 25 ++++++++++--- src/Controller/Plugin/Layout.php | 2 +- src/Controller/Plugin/Params.php | 6 ++-- src/Controller/Plugin/Redirect.php | 3 +- src/MiddlewareListener.php | 14 +++++--- src/MvcEvent.php | 25 +++++++------ src/ResponseSender/AbstractResponseSender.php | 5 ++- src/RouteListener.php | 13 ++++++- src/Service/HttpViewManagerConfigTrait.php | 2 +- src/Service/ServiceListenerFactory.php | 1 - src/View/Http/DefaultRenderingStrategy.php | 36 +++++++++++++------ .../Http/InjectRoutematchParamsListener.php | 6 ++-- src/View/Http/InjectViewModelListener.php | 5 +++ src/View/Http/ViewManager.php | 20 +++++++++-- 20 files changed, 184 insertions(+), 71 deletions(-) diff --git a/src/Controller/AbstractController.php b/src/Controller/AbstractController.php index 5c236cdeb..eb733370a 100644 --- a/src/Controller/AbstractController.php +++ b/src/Controller/AbstractController.php @@ -40,27 +40,27 @@ abstract class AbstractController implements InjectApplicationEventInterface { /** - * @var PluginManager + * @var null|PluginManager */ protected $plugins; /** - * @var Request + * @var null|Request */ protected $request; /** - * @var Response + * @var null|Response */ protected $response; /** - * @var MvcEvent + * @var null|MvcEvent */ protected $event; /** - * @var EventManagerInterface + * @var null|EventManagerInterface */ protected $events; @@ -149,7 +149,9 @@ public function setEventManager(EventManagerInterface $events) $className = get_class($this); $nsPos = strpos($className, '\\') ?: 0; - $events->setIdentifiers(array_merge( + + /** @var string[] $identifiers */ + $identifiers = array_merge( [ __CLASS__, $className, @@ -157,7 +159,9 @@ public function setEventManager(EventManagerInterface $events) ], array_values(class_implements($className)), (array) $this->eventIdentifier - )); + ); + + $events->setIdentifiers($identifiers); $this->events = $events; $this->attachDefaultListeners(); @@ -178,7 +182,10 @@ public function getEventManager() $this->setEventManager(new EventManager()); } - return $this->events; + /** @var EventManagerInterface $events */ + $events = $this->events; + + return $events; } /** @@ -213,7 +220,10 @@ public function getEvent() $this->setEvent(new MvcEvent()); } - return $this->event; + /** @var MvcEvent $event */ + $event = $this->event; + + return $event; } /** @@ -227,8 +237,11 @@ public function getPluginManager() $this->setPluginManager(new PluginManager(new ServiceManager())); } - $this->plugins->setController($this); - return $this->plugins; + /** @var PluginManager $plugins */ + $plugins = $this->plugins; + $plugins->setController($this); + + return $plugins; } /** diff --git a/src/Controller/AbstractRestfulController.php b/src/Controller/AbstractRestfulController.php index 6cef6d6b9..ea9fbf396 100644 --- a/src/Controller/AbstractRestfulController.php +++ b/src/Controller/AbstractRestfulController.php @@ -6,7 +6,7 @@ */ namespace Zend\Mvc\Controller; -use Zend\Http\AbstractMessage; +use Zend\Http\Headers; use Zend\Http\Request as HttpRequest; use Zend\Http\Response as HttpResponse; use Zend\Json\Json; @@ -99,7 +99,7 @@ public function getIdentifierName() private function getHttpResponse() { $response = $this->getResponse(); - + if (! $response instanceof HttpResponse) { throw new Exception\UnexpectedValueException(sprintf( 'Response must be an instance of %s. %s given', @@ -517,7 +517,7 @@ public function processPostData(Request $request) * Check if request has certain content type * * @param Request $request - * @param string|null $contentType + * @param string $contentType * @return bool */ public function requestHasContentType(Request $request, $contentType = '') @@ -530,8 +530,10 @@ public function requestHasContentType(Request $request, $contentType = '') )); } - /** @var \Zend\Http\Header\ContentType $headerContentType */ - $headerContentType = $request->getHeaders()->get('content-type'); + /** @var Headers $headers */ + $headers = $request->getHeaders(); + /** @var \Zend\Http\Header\ContentType|null $headerContentType */ + $headerContentType = $headers->get('content-type'); if (! $headerContentType) { return false; } @@ -539,6 +541,7 @@ public function requestHasContentType(Request $request, $contentType = '') $requestedContentType = $headerContentType->getFieldValue(); if (false !== strpos($requestedContentType, ';')) { $headerData = explode(';', $requestedContentType); + /** @var string $requestedContentType */ $requestedContentType = array_shift($headerData); } $requestedContentType = trim($requestedContentType); diff --git a/src/Controller/ControllerManager.php b/src/Controller/ControllerManager.php index ffc39e63d..3f0338d45 100644 --- a/src/Controller/ControllerManager.php +++ b/src/Controller/ControllerManager.php @@ -9,6 +9,7 @@ use Interop\Container\ContainerInterface; use Zend\EventManager\EventManagerAwareInterface; +use Zend\EventManager\EventManagerInterface; use Zend\EventManager\SharedEventManagerInterface; use Zend\ServiceManager\AbstractPluginManager; use Zend\ServiceManager\ConfigInterface; @@ -87,6 +88,7 @@ public function injectEventManager(ContainerInterface $container, $controller) return; } + /** @var EventManagerInterface|null $events */ $events = $controller->getEventManager(); if (! $events || ! $events->getSharedManager() instanceof SharedEventManagerInterface) { $controller->setEventManager($container->get('EventManager')); diff --git a/src/Controller/LazyControllerAbstractFactory.php b/src/Controller/LazyControllerAbstractFactory.php index 0cd0f23d8..4727af1a6 100644 --- a/src/Controller/LazyControllerAbstractFactory.php +++ b/src/Controller/LazyControllerAbstractFactory.php @@ -104,7 +104,9 @@ public function __invoke(ContainerInterface $container, $requestedName, array $o { $reflectionClass = new ReflectionClass($requestedName); - if (null === ($constructor = $reflectionClass->getConstructor())) { + $constructor = $constructor = $reflectionClass->getConstructor(); + + if (null === $constructor) { return new $requestedName(); } @@ -163,11 +165,13 @@ private function resolveParameter(ContainerInterface $container, $requestedName) return []; } - if (! $parameter->getClass()) { - return; + $parameterClass = $parameter->getClass(); + + if (! $parameterClass) { + return null; } - $type = $parameter->getClass()->getName(); + $type = $parameterClass->getName(); $type = isset($this->aliases[$type]) ? $this->aliases[$type] : $type; if (! $container->has($type)) { diff --git a/src/Controller/MiddlewareController.php b/src/Controller/MiddlewareController.php index aee5e269d..d5621a365 100644 --- a/src/Controller/MiddlewareController.php +++ b/src/Controller/MiddlewareController.php @@ -95,7 +95,7 @@ private function loadRequest() throw new RuntimeException(sprintf( 'Expected request to be a %s, %s given', Request::class, - get_class($request) + \is_object($request) ? \get_class($request) : \gettype($request) )); } diff --git a/src/Controller/Plugin/AcceptableViewModelSelector.php b/src/Controller/Plugin/AcceptableViewModelSelector.php index 31bfd3bb2..464acfacd 100644 --- a/src/Controller/Plugin/AcceptableViewModelSelector.php +++ b/src/Controller/Plugin/AcceptableViewModelSelector.php @@ -8,8 +8,10 @@ namespace Zend\Mvc\Controller\Plugin; use Zend\Http\Header\Accept\FieldValuePart\AbstractFieldValuePart; +use Zend\Http\Header\Accept\FieldValuePart\AcceptFieldValuePart; use Zend\Http\Headers; use Zend\Http\Request; +use Zend\Mvc\Exception\UnexpectedValueException; use Zend\Mvc\InjectApplicationEventInterface; use Zend\Mvc\MvcEvent; use Zend\Mvc\Exception\DomainException; @@ -31,13 +33,13 @@ class AcceptableViewModelSelector extends AbstractPlugin /** * - * @var \Zend\Mvc\MvcEvent + * @var null|\Zend\Mvc\MvcEvent */ protected $event; /** * - * @var \Zend\Http\Request + * @var null|\Zend\Http\Request */ protected $request; @@ -137,7 +139,7 @@ public function getViewModelName( * Detects an appropriate viewmodel name for request. * * @param array $matchAgainst (optional) The Array to match against - * @return AbstractFieldValuePart|null The object that was matched + * @return AcceptFieldValuePart|null The object that was matched */ public function match(array $matchAgainst = null) { @@ -145,7 +147,7 @@ public function match(array $matchAgainst = null) /** @var Headers $headers */ $headers = $request->getHeaders(); - if ((! $matchAgainst && ! $this->defaultMatchAgainst) || ! $headers->has('accept')) { + if (! $headers->has('accept')) { return null; } @@ -153,6 +155,10 @@ public function match(array $matchAgainst = null) $matchAgainst = $this->defaultMatchAgainst; } + if (! $matchAgainst) { + return null; + } + $matchAgainstString = ''; foreach ($matchAgainst as $modelName => $modelStrings) { foreach ((array) $modelStrings as $modelString) { @@ -162,11 +168,13 @@ public function match(array $matchAgainst = null) /** @var \Zend\Http\Header\Accept $accept */ $accept = $headers->get('Accept'); - if (($res = $accept->match($matchAgainstString)) === false) { + /** @var AcceptFieldValuePart|false $match */ + $match = $accept->match($matchAgainstString); + if ($match === false) { return null; } - return $res; + return $match; } /** @@ -234,7 +242,13 @@ protected function injectViewModelName($modelAcceptString, $modelName) */ protected function extractViewModelName(AbstractFieldValuePart $res) { - $modelName = $res->getMatchedAgainst()->params[self::INJECT_VIEWMODEL_NAME]; + $matchedAgainst = $res->getMatchedAgainst(); + if (null === $matchedAgainst) { + throw new UnexpectedValueException(sprintf( + 'Unable to find matchedAgainst value' + )); + } + $modelName = $matchedAgainst->params[self::INJECT_VIEWMODEL_NAME]; return str_replace('|', '\\', $modelName); } diff --git a/src/Controller/Plugin/Forward.php b/src/Controller/Plugin/Forward.php index 1a44c2a54..c44beef73 100644 --- a/src/Controller/Plugin/Forward.php +++ b/src/Controller/Plugin/Forward.php @@ -7,6 +7,7 @@ namespace Zend\Mvc\Controller\Plugin; +use Zend\EventManager\EventInterface; use Zend\EventManager\SharedEventManagerInterface as SharedEvents; use Zend\Mvc\Controller\ControllerManager; use Zend\Mvc\Exception; @@ -24,7 +25,7 @@ class Forward extends AbstractPlugin protected $controllers; /** - * @var MvcEvent + * @var null|MvcEvent */ protected $event; @@ -144,7 +145,14 @@ public function dispatch($name, array $params = null) $this->numNestedForwards++; // Detach listeners that may cause problems during dispatch: - $sharedEvents = $event->getApplication()->getEventManager()->getSharedManager(); + $application = $event->getApplication(); + + if (null === $application) { + throw new Exception\UnexpectedValueException('No Application in event'); + } + + $appEventManager = $application->getEventManager(); + $sharedEvents = $appEventManager->getSharedManager(); if (null === $sharedEvents) { throw new Exception\RuntimeException('No SharedEventManager set on application EventManager'); @@ -186,8 +194,16 @@ protected function detachProblemListeners(SharedEvents $sharedEvents) // Loop through the class blacklist, detaching problem events and remembering their CallbackHandlers // for future reference: $results = []; + /** + * @var string $id + * @var array $eventArray + */ foreach ($formattedProblems as $id => $eventArray) { $results[$id] = []; + /** + * @var string $eventName + * @var string[] $classArray + */ foreach ($eventArray as $eventName => $classArray) { $results[$id][$eventName] = []; $events = $this->getSharedListenersById($id, $eventName, $sharedEvents); @@ -255,10 +271,11 @@ protected function getEvent() if (! $controller instanceof InjectApplicationEventInterface) { throw new Exception\DomainException(sprintf( 'Forward plugin requires a controller that implements InjectApplicationEventInterface; received %s', - (is_object($controller) ? get_class($controller) : var_export($controller, 1)) + (is_object($controller) ? get_class($controller) : var_export($controller, true)) )); } + /** @var EventInterface|null $event */ $event = $controller->getEvent(); if (! $event instanceof MvcEvent) { $params = []; @@ -293,7 +310,7 @@ private function getSharedListenersById($id, $event, SharedEvents $sharedEvents) * * Varies detachment based on zend-eventmanager version. * - * @param string|int $id + * @param string $id * @param callable $listener * @param SharedEvents $sharedEvents * @return void diff --git a/src/Controller/Plugin/Layout.php b/src/Controller/Plugin/Layout.php index 89e41588e..f190957ca 100644 --- a/src/Controller/Plugin/Layout.php +++ b/src/Controller/Plugin/Layout.php @@ -15,7 +15,7 @@ class Layout extends AbstractPlugin { /** - * @var MvcEvent + * @var null|MvcEvent */ protected $event; diff --git a/src/Controller/Plugin/Params.php b/src/Controller/Plugin/Params.php index c79b768b1..fd0c57572 100644 --- a/src/Controller/Plugin/Params.php +++ b/src/Controller/Plugin/Params.php @@ -17,14 +17,14 @@ class Params extends AbstractPlugin private function getPluginController() { $controller = $this->getController(); - + if (! $controller instanceof AbstractController) { throw new RuntimeException('Controller is not an instance of ' . AbstractController::class); } - + return $controller; } - + /** * Grabs a param from route match by default. * diff --git a/src/Controller/Plugin/Redirect.php b/src/Controller/Plugin/Redirect.php index df9b650d4..71930dbad 100644 --- a/src/Controller/Plugin/Redirect.php +++ b/src/Controller/Plugin/Redirect.php @@ -25,7 +25,7 @@ class Redirect extends AbstractPlugin * * @param string $route RouteInterface name * @param array $params Parameters to use in url generation, if any - * @param array $options RouteInterface-specific options to use in url generation, if any + * @param array|bool $options RouteInterface-specific options to use in url generation, if any * @param bool $reuseMatchedParams Whether to reuse matched parameters * @return Response * @throws Exception\DomainException if composed controller does not implement InjectApplicationEventInterface, or @@ -40,6 +40,7 @@ public function toRoute($route = null, $params = [], $options = [], $reuseMatche ); } + /** @var Url $urlPlugin */ $urlPlugin = $controller->plugin('url'); if (is_scalar($options)) { diff --git a/src/MiddlewareListener.php b/src/MiddlewareListener.php index d564a030e..f21da81f3 100644 --- a/src/MiddlewareListener.php +++ b/src/MiddlewareListener.php @@ -17,6 +17,7 @@ use Zend\Mvc\Exception\InvalidMiddlewareException; use Zend\Mvc\Controller\MiddlewareController; use Zend\Mvc\Exception\RuntimeException; +use Zend\Mvc\Exception\UnexpectedValueException; use Zend\Psr7Bridge\Psr7Response; use Zend\Stratigility\MiddlewarePipe; @@ -48,8 +49,8 @@ public function onDispatch(MvcEvent $event) $routeMatch = $event->getRouteMatch(); - if (! $routeMatch) { - throw new RuntimeException('Event has no RouteMatch'); + if (null === $routeMatch) { + throw new RuntimeException('No RouteMatch in event'); } $middleware = $routeMatch->getParam('middleware', false); @@ -59,13 +60,18 @@ public function onDispatch(MvcEvent $event) $request = $event->getRequest(); $application = $event->getApplication(); - $response = $application->getResponse(); - $serviceManager = $application->getServiceManager(); + + if (null === $request) { + throw new UnexpectedValueException('No Request in event'); + } if (! $application instanceof Application) { throw new RuntimeException('Application is not an instance of ' . Application::class); } + $response = $application->getResponse(); + $serviceManager = $application->getServiceManager(); + if (! $response instanceof Response) { throw new RuntimeException('Application response is not an instance of ' . Response::class); } diff --git a/src/MvcEvent.php b/src/MvcEvent.php index f9918377c..3a9fb05ea 100644 --- a/src/MvcEvent.php +++ b/src/MvcEvent.php @@ -29,15 +29,18 @@ class MvcEvent extends Event const EVENT_ROUTE = 'route'; /**#@-*/ + /** + * @var null|ApplicationInterface + */ protected $application; /** - * @var Request + * @var null|Request */ protected $request; /** - * @var Response + * @var null|Response */ protected $response; @@ -47,7 +50,7 @@ class MvcEvent extends Event protected $result; /** - * @var RouteStackInterface + * @var null|RouteStackInterface */ protected $router; @@ -57,7 +60,7 @@ class MvcEvent extends Event protected $routeMatch; /** - * @var Model + * @var null|Model */ protected $viewModel; @@ -77,7 +80,7 @@ public function setApplication(ApplicationInterface $application) /** * Get application instance * - * @return ApplicationInterface + * @return null|ApplicationInterface */ public function getApplication() { @@ -87,7 +90,7 @@ public function getApplication() /** * Get router * - * @return RouteStackInterface + * @return null|RouteStackInterface */ public function getRouter() { @@ -133,7 +136,7 @@ public function setRouteMatch(RouteMatch $matches) /** * Get request * - * @return Request + * @return null|Request */ public function getRequest() { @@ -156,7 +159,7 @@ public function setRequest(Request $request) /** * Get response * - * @return Response + * @return null|Response */ public function getResponse() { @@ -191,7 +194,7 @@ public function setViewModel(Model $viewModel) /** * Get the view model * - * @return Model + * @return null|Model */ public function getViewModel() { @@ -259,7 +262,7 @@ public function getError() /** * Get the currently registered controller name * - * @return string + * @return null|string */ public function getController() { @@ -281,7 +284,7 @@ public function setController($name) /** * Get controller class * - * @return string + * @return null|string */ public function getControllerClass() { diff --git a/src/ResponseSender/AbstractResponseSender.php b/src/ResponseSender/AbstractResponseSender.php index 3fef27f58..6ec4554b9 100644 --- a/src/ResponseSender/AbstractResponseSender.php +++ b/src/ResponseSender/AbstractResponseSender.php @@ -9,6 +9,7 @@ use Zend\Http\Header\HeaderInterface; use Zend\Http\Header\MultipleHeaderInterface; +use Zend\Http\Headers; use Zend\Http\Response; use Zend\Mvc\Exception\RuntimeException; use Zend\Mvc\Exception\UnexpectedValueException; @@ -37,7 +38,9 @@ public function sendHeaders(SendResponseEvent $event) )); } - foreach ($response->getHeaders() as $header) { + /** @var Headers|HeaderInterface[] $headers */ + $headers = $response->getHeaders(); + foreach ($headers as $header) { if ($header instanceof MultipleHeaderInterface) { header($header->toString(), false); continue; diff --git a/src/RouteListener.php b/src/RouteListener.php index 4fd1fc37f..3c32782fe 100644 --- a/src/RouteListener.php +++ b/src/RouteListener.php @@ -9,6 +9,7 @@ use Zend\EventManager\AbstractListenerAggregate; use Zend\EventManager\EventManagerInterface; +use Zend\Mvc\Exception\UnexpectedValueException; use Zend\Router\RouteMatch; class RouteListener extends AbstractListenerAggregate @@ -34,12 +35,21 @@ public function attach(EventManagerInterface $events, $priority = 1) * Seeds the event with the route match on completion. * * @param MvcEvent $event - * @return null|RouteMatch + * @return null|RouteMatch|array|object */ public function onRoute(MvcEvent $event) { $request = $event->getRequest(); $router = $event->getRouter(); + + if (null === $request) { + throw new UnexpectedValueException('No Request in event'); + } + + if (null === $router) { + throw new UnexpectedValueException('No Router in event'); + } + $routeMatch = $router->match($request); if ($routeMatch instanceof RouteMatch) { @@ -50,6 +60,7 @@ public function onRoute(MvcEvent $event) $event->setName(MvcEvent::EVENT_DISPATCH_ERROR); $event->setError(Application::ERROR_ROUTER_NO_MATCH); + /** @var Application $target */ $target = $event->getTarget(); $results = $target->getEventManager()->triggerEvent($event); if (! empty($results)) { diff --git a/src/Service/HttpViewManagerConfigTrait.php b/src/Service/HttpViewManagerConfigTrait.php index 6c6efa62d..8ce67daa8 100644 --- a/src/Service/HttpViewManagerConfigTrait.php +++ b/src/Service/HttpViewManagerConfigTrait.php @@ -16,7 +16,7 @@ trait HttpViewManagerConfigTrait * Retrieve view_manager configuration, if present. * * @param ContainerInterface $container - * @return array + * @return array|ArrayAccess */ private function getConfig(ContainerInterface $container) { diff --git a/src/Service/ServiceListenerFactory.php b/src/Service/ServiceListenerFactory.php index 8bd01e94f..3b285d7e8 100644 --- a/src/Service/ServiceListenerFactory.php +++ b/src/Service/ServiceListenerFactory.php @@ -14,7 +14,6 @@ use Zend\ServiceManager\Exception\ServiceNotCreatedException; use Zend\ServiceManager\Factory\FactoryInterface; use Zend\ServiceManager\Factory\InvokableFactory; -use Zend\ServiceManager\ServiceLocatorInterface; use Zend\ServiceManager\ServiceManager; use Zend\Mvc\Exception; diff --git a/src/View/Http/DefaultRenderingStrategy.php b/src/View/Http/DefaultRenderingStrategy.php index c11f6319c..cfd9922a0 100644 --- a/src/View/Http/DefaultRenderingStrategy.php +++ b/src/View/Http/DefaultRenderingStrategy.php @@ -10,6 +10,7 @@ use Zend\EventManager\AbstractListenerAggregate; use Zend\EventManager\EventManagerInterface; use Zend\Mvc\Application; +use Zend\Mvc\Exception\UnexpectedValueException; use Zend\Mvc\MvcEvent; use Zend\Stdlib\ResponseInterface as Response; use Zend\View\Model\ModelInterface as ViewModel; @@ -92,6 +93,14 @@ public function render(MvcEvent $e) return null; } + if (null === $request) { + throw new UnexpectedValueException('No Request in event'); + } + + if (null === $response) { + throw new UnexpectedValueException('No Response in event'); + } + $view = $this->view; $view->setRequest($request); $view->setResponse($response); @@ -106,20 +115,25 @@ public function render(MvcEvent $e) $caughtException = $ex; } - if ($caughtException !== null) { - if ($e->getName() === MvcEvent::EVENT_RENDER_ERROR) { - throw $caughtException; - } + if (null === $caughtException) { + return $response; + } + + if ($e->getName() === MvcEvent::EVENT_RENDER_ERROR) { + throw $caughtException; + } - $application = $e->getApplication(); - $events = $application->getEventManager(); + $application = $e->getApplication(); - $e->setError(Application::ERROR_EXCEPTION); - $e->setParam('exception', $caughtException); - $e->setName(MvcEvent::EVENT_RENDER_ERROR); - $events->triggerEvent($e); + if (null === $application) { + throw new UnexpectedValueException('No Application in event'); } - return $response; + $events = $application->getEventManager(); + + $e->setError(Application::ERROR_EXCEPTION); + $e->setParam('exception', $caughtException); + $e->setName(MvcEvent::EVENT_RENDER_ERROR); + $events->triggerEvent($e); } } diff --git a/src/View/Http/InjectRoutematchParamsListener.php b/src/View/Http/InjectRoutematchParamsListener.php index 09a8f6f39..57be8f141 100644 --- a/src/View/Http/InjectRoutematchParamsListener.php +++ b/src/View/Http/InjectRoutematchParamsListener.php @@ -38,11 +38,13 @@ public function attach(EventManagerInterface $events, $priority = 1) */ public function injectParams(MvcEvent $e) { - if (! $e->getRouteMatch()) { + $routeMatch = $e->getRouteMatch(); + + if (null === $routeMatch) { throw new Exception\RuntimeException('No RouteMatch in event'); } - $routeMatchParams = $e->getRouteMatch()->getParams(); + $routeMatchParams = $routeMatch->getParams(); $request = $e->getRequest(); if (! $request instanceof HttpRequest) { diff --git a/src/View/Http/InjectViewModelListener.php b/src/View/Http/InjectViewModelListener.php index 6a61a9b32..27fe4c711 100644 --- a/src/View/Http/InjectViewModelListener.php +++ b/src/View/Http/InjectViewModelListener.php @@ -9,6 +9,7 @@ use Zend\EventManager\AbstractListenerAggregate; use Zend\EventManager\EventManagerInterface as Events; +use Zend\Mvc\Exception\UnexpectedValueException; use Zend\Mvc\MvcEvent; use Zend\View\Model\ClearableModelInterface; use Zend\View\Model\ModelInterface as ViewModel; @@ -49,6 +50,10 @@ public function injectViewModel(MvcEvent $e) return; } + if (null === $model) { + throw new UnexpectedValueException('Unable to get ViewModel from MvcEvent'); + } + if ($e->getError() && $model instanceof ClearableModelInterface) { $model->clearChildren(); } diff --git a/src/View/Http/ViewManager.php b/src/View/Http/ViewManager.php index 7d7f0f9a6..67ec63270 100644 --- a/src/View/Http/ViewManager.php +++ b/src/View/Http/ViewManager.php @@ -88,6 +88,11 @@ public function attach(EventManagerInterface $events, $priority = 1) public function onBootstrap($event) { $application = $event->getApplication(); + + if (null === $application) { + throw new Exception\UnexpectedValueException('Unable to get Application from MvcEvent'); + } + $services = $application->getServiceManager(); $config = $services->get('config'); $events = $application->getEventManager(); @@ -101,12 +106,16 @@ public function onBootstrap($event) $this->services = $services; $this->event = $event; + /** @var RouteNotFoundStrategy $routeNotFoundStrategy */ $routeNotFoundStrategy = $services->get('HttpRouteNotFoundStrategy'); + /** @var ExceptionStrategy $exceptionStrategy */ $exceptionStrategy = $services->get('HttpExceptionStrategy'); + /** @var DefaultRenderingStrategy $mvcRenderingStrategy */ $mvcRenderingStrategy = $services->get('HttpDefaultRenderingStrategy'); $this->injectViewModelIntoPlugin(); + /** @var InjectTemplateListener $injectTemplateListener */ $injectTemplateListener = $services->get(InjectTemplateListener::class); $createViewModelListener = new CreateViewModelListener(); $injectViewModelListener = new InjectViewModelListener(); @@ -183,10 +192,17 @@ public function getViewModel() } $this->viewModel = $model = $this->event->getViewModel(); - $layoutTemplate = $this->services->get('HttpDefaultRenderingStrategy')->getLayoutTemplate(); + + if (null === $model) { + throw new Exception\UnexpectedValueException('No ViewModel in event'); + } + + /** @var DefaultRenderingStrategy $renderingStrategy */ + $renderingStrategy = $this->services->get('HttpDefaultRenderingStrategy'); + $layoutTemplate = $renderingStrategy->getLayoutTemplate(); $model->setTemplate($layoutTemplate); - return $this->viewModel; + return $model; } /** From 4c52699817be08fd31636442bb3de8fea47925e8 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 17:04:03 +0200 Subject: [PATCH 04/20] Added phpstan in CI --- .gitattributes | 1 + .travis.yml | 4 + composer.json | 8 + composer.lock | 594 ++++++++++++++++++++++++++++++++++++++++++++++++- phpstan.neon | 15 ++ 5 files changed, 620 insertions(+), 2 deletions(-) create mode 100644 phpstan.neon diff --git a/.gitattributes b/.gitattributes index 16d8d2934..a6bd07a41 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8,3 +8,4 @@ /phpcs.xml export-ignore /phpunit.xml.dist export-ignore /test/ export-ignore +/phpstan.neon export-ignore diff --git a/.travis.yml b/.travis.yml index 3c5f852b5..f778efa4d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ env: global: - COMPOSER_ARGS="--no-interaction" - COVERAGE_DEPS="php-coveralls/php-coveralls" + - PHPSTAN_DEPS="phpstan/phpstan:^0.10.3" matrix: include: @@ -41,6 +42,7 @@ matrix: - DEPS=locked - CS_CHECK=true - TEST_COVERAGE=true + - PHPSTAN_TEST=true - php: 7.1 env: - DEPS=latest @@ -63,11 +65,13 @@ install: - if [[ $DEPS == 'latest' ]]; then travis_retry composer update $COMPOSER_ARGS ; fi - if [[ $DEPS == 'lowest' ]]; then travis_retry composer update --prefer-lowest --prefer-stable $COMPOSER_ARGS ; fi - if [[ $TEST_COVERAGE == 'true' ]]; then travis_retry composer require --dev $COMPOSER_ARGS $COVERAGE_DEPS ; fi + - if [[ $PHPSTAN_TEST == 'true' ]]; then travis_retry composer require --dev $COMPOSER_ARGS --no-update $PHPSTAN_DEPS ; fi - stty cols 120 && composer show script: - if [[ $TEST_COVERAGE == 'true' ]]; then composer test-coverage ; else composer test ; fi - if [[ $CS_CHECK == 'true' ]]; then composer cs-check ; fi + - if [[ $PHPSTAN_TEST == 'true' ]]; then vendor/bin/phpstan analyse -l 7 -c ./phpstan.neon --no-progress . ; fi after_script: - if [[ $TEST_COVERAGE == 'true' ]]; then vendor/bin/php-coveralls -v ; fi diff --git a/composer.json b/composer.json index e34462775..56ad8a19d 100644 --- a/composer.json +++ b/composer.json @@ -7,6 +7,7 @@ "zendframework", "mvc" ], + "version": "3.1.2", "support": { "docs": "https://docs.zendframework.com/zend-mvc/", "issues": "https://github.com/zendframework/zend-mvc/issues", @@ -30,8 +31,15 @@ "http-interop/http-middleware": "^0.4.1", "phpunit/phpunit": "^6.4.4 || ^5.7.14", "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-filter": "^2.6", + "zendframework/zend-hydrator": "^2.2.1", + "zendframework/zend-inputfilter": "^2.6", "zendframework/zend-json": "^2.6.1 || ^3.0", + "zendframework/zend-log": "^2.6", + "zendframework/zend-mvc-console": "^1.1.11", + "zendframework/zend-paginator": "^2.0.0", "zendframework/zend-psr7bridge": "^1.0", + "zendframework/zend-serializer": "^2.6", "zendframework/zend-stratigility": "^2.0.1" }, "suggest": { diff --git a/composer.lock b/composer.lock index 0087b6629..718258bf9 100644 --- a/composer.lock +++ b/composer.lock @@ -1,10 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4dca15262833c4fd34ad940c5472e161", + "content-hash": "4b4e9cfcf733bcd056bf14c8b44d0498", "packages": [ { "name": "container-interop/container-interop", @@ -1681,6 +1681,53 @@ ], "time": "2016-08-06T14:39:51+00:00" }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, { "name": "sebastian/code-unit-reverse-lookup", "version": "1.0.1", @@ -2448,6 +2495,7 @@ "psr-15", "webimpress" ], + "abandoned": "psr/http-server-middleware", "time": "2017-10-17T17:31:10+00:00" }, { @@ -2529,6 +2577,59 @@ ], "time": "2016-11-09T21:30:43+00:00" }, + { + "name": "zendframework/zend-console", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-console.git", + "reference": "e8aa08da83de3d265256c40ba45cd649115f0e18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-console/zipball/e8aa08da83de3d265256c40ba45cd649115f0e18", + "reference": "e8aa08da83de3d265256c40ba45cd649115f0e18", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-filter": "^2.7.2", + "zendframework/zend-json": "^2.6 || ^3.0", + "zendframework/zend-validator": "^2.10.1" + }, + "suggest": { + "zendframework/zend-filter": "To support DefaultRouteMatcher usage", + "zendframework/zend-validator": "To support DefaultRouteMatcher usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7.x-dev", + "dev-develop": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Console\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Build console applications using getopt syntax or routing, complete with prompts", + "keywords": [ + "ZendFramework", + "console", + "zf" + ], + "time": "2018-01-25T19:08:04+00:00" + }, { "name": "zendframework/zend-diactoros", "version": "1.6.1", @@ -2581,6 +2682,188 @@ ], "time": "2017-10-12T15:24:51+00:00" }, + { + "name": "zendframework/zend-filter", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-filter.git", + "reference": "7b997dbe79459f1652deccc8786d7407fb66caa9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/7b997dbe79459f1652deccc8786d7407fb66caa9", + "reference": "7b997dbe79459f1652deccc8786d7407fb66caa9", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1" + }, + "conflict": { + "zendframework/zend-validator": "<2.10.1" + }, + "require-dev": { + "pear/archive_tar": "^1.4.3", + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-crypt": "^3.2.1", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.3", + "zendframework/zend-uri": "^2.6" + }, + "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.8.x-dev", + "dev-develop": "2.9.x-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", + "keywords": [ + "ZendFramework", + "filter", + "zf" + ], + "time": "2018-04-11T16:20:04+00:00" + }, + { + "name": "zendframework/zend-hydrator", + "version": "2.4.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-hydrator.git", + "reference": "bd48bc3bc046df007a94125f868dd1aa1b73a813" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/bd48bc3bc046df007a94125f868dd1aa1b73a813", + "reference": "bd48bc3bc046df007a94125f868dd1aa1b73a813", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-stdlib": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-eventmanager": "^2.6.2 || ^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.x-dev", + "dev-release-1.1": "1.1.x-dev", + "dev-master": "2.4.x-dev", + "dev-develop": "2.5.x-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" + ], + "description": "Serialize objects to arrays, and vice versa", + "keywords": [ + "ZendFramework", + "hydrator", + "zf" + ], + "time": "2018-04-30T21:22:14+00:00" + }, + { + "name": "zendframework/zend-inputfilter", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-inputfilter.git", + "reference": "e7edd625f2fcdd72a719a7023114c5f4b4f38488" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/e7edd625f2fcdd72a719a7023114c5f4b4f38488", + "reference": "e7edd625f2fcdd72a719a7023114c5f4b4f38488", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-filter": "^2.6", + "zendframework/zend-stdlib": "^2.7 || ^3.0", + "zendframework/zend-validator": "^2.10.1" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "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.8-dev", + "dev-develop": "2.9-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" + ], + "description": "Normalize and validate input sets from the web, APIs, the CLI, and more, including files", + "keywords": [ + "ZendFramework", + "inputfilter", + "zf" + ], + "time": "2017-12-04T21:24:25+00:00" + }, { "name": "zendframework/zend-json", "version": "3.0.0", @@ -2631,6 +2914,208 @@ ], "time": "2016-04-01T02:34:00+00:00" }, + { + "name": "zendframework/zend-log", + "version": "2.10.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-log.git", + "reference": "9cec3b092acb39963659c2f32441cccc56b3f430" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-log/zipball/9cec3b092acb39963659c2f32441cccc56b3f430", + "reference": "9cec3b092acb39963659c2f32441cccc56b3f430", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "psr/log": "^1.0", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "^5.7.15 || ^6.0.8", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-db": "^2.6", + "zendframework/zend-escaper": "^2.5", + "zendframework/zend-filter": "^2.5", + "zendframework/zend-mail": "^2.6.1", + "zendframework/zend-validator": "^2.10.1" + }, + "suggest": { + "ext-mongo": "mongo extension to use Mongo writer", + "ext-mongodb": "mongodb extension to use MongoDB writer", + "zendframework/zend-console": "Zend\\Console component to use the RequestID log processor", + "zendframework/zend-db": "Zend\\Db component to use the database log writer", + "zendframework/zend-escaper": "Zend\\Escaper component, for use in the XML log formatter", + "zendframework/zend-mail": "Zend\\Mail component to use the email log writer", + "zendframework/zend-validator": "Zend\\Validator component to block invalid log messages" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10.x-dev", + "dev-develop": "2.11.x-dev" + }, + "zf": { + "component": "Zend\\Log", + "config-provider": "Zend\\Log\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Log\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "component for general purpose logging", + "homepage": "https://github.com/zendframework/zend-log", + "keywords": [ + "log", + "logging", + "zf2" + ], + "time": "2018-04-09T21:59:51+00:00" + }, + { + "name": "zendframework/zend-mvc-console", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-mvc-console.git", + "reference": "821c18e0d57e71b370166bd2f35623befddaf2ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-mvc-console/zipball/821c18e0d57e71b370166bd2f35623befddaf2ee", + "reference": "821c18e0d57e71b370166bd2f35623befddaf2ee", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.1", + "php": "^5.6 || ^7.0", + "zendframework/zend-console": "^2.6", + "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", + "zendframework/zend-modulemanager": "^2.7.1", + "zendframework/zend-mvc": "^3.0.3", + "zendframework/zend-router": "^3.0", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-stdlib": "^2.7.5 || ^3.0", + "zendframework/zend-text": "^2.6", + "zendframework/zend-view": "^2.6.3" + }, + "conflict": { + "zendframework/zend-mvc": "<3.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-filter": "^2.6.1" + }, + "suggest": { + "zendframework/zend-filter": "^2.6.1, to filter rendered results" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev", + "dev-develop": "1.3.x-dev" + }, + "zf": { + "component": "Zend\\Mvc\\Console" + } + }, + "autoload": { + "psr-4": { + "Zend\\Mvc\\Console\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Integration between zend-mvc and zend-console", + "keywords": [ + "ZendFramework", + "console", + "mvc", + "zf" + ], + "time": "2018-04-30T19:10:26+00:00" + }, + { + "name": "zendframework/zend-paginator", + "version": "2.8.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-paginator.git", + "reference": "fd58828c8280a90f133b9e0af2fe1a7885d47206" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-paginator/zipball/fd58828c8280a90f133b9e0af2fe1a7885d47206", + "reference": "fd58828c8280a90f133b9e0af2fe1a7885d47206", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^5.6", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2.1 || ^5.7.15", + "zendframework/zend-cache": "^2.6.1", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6.0", + "zendframework/zend-db": "^2.9.2", + "zendframework/zend-filter": "^2.6.1", + "zendframework/zend-json": "^2.6.1", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-view": "^2.6.3" + }, + "suggest": { + "zendframework/zend-cache": "Zend\\Cache component to support cache features", + "zendframework/zend-db": "Zend\\Db component", + "zendframework/zend-filter": "Zend\\Filter component", + "zendframework/zend-json": "Zend\\Json component", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-view": "Zend\\View component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev", + "dev-develop": "2.9-dev" + }, + "zf": { + "component": "Zend\\Paginator", + "config-provider": "Zend\\Paginator\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Paginator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "zend-paginator is a flexible component for paginating collections of data and presenting that data to users.", + "homepage": "https://github.com/zendframework/zend-paginator", + "keywords": [ + "paginator", + "zf2" + ], + "time": "2018-01-30T15:52:44+00:00" + }, { "name": "zendframework/zend-psr7bridge", "version": "1.0.0", @@ -2682,6 +3167,63 @@ ], "time": "2017-08-02T15:52:02+00:00" }, + { + "name": "zendframework/zend-serializer", + "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-serializer.git", + "reference": "0172690db48d8935edaf625c4cba38b79719892c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/0172690db48d8935edaf625c4cba38b79719892c", + "reference": "0172690db48d8935edaf625c4cba38b79719892c", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-json": "^2.5 || ^3.0", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.25 || ^6.4.4", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-math": "^2.6 || ^3.0", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" + }, + "suggest": { + "zendframework/zend-math": "(^2.6 || ^3.0) To support Python Pickle serialization", + "zendframework/zend-servicemanager": "(^2.7.5 || ^3.0.3) To support plugin manager support" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.9.x-dev", + "dev-develop": "2.10.x-dev" + }, + "zf": { + "component": "Zend\\Serializer", + "config-provider": "Zend\\Serializer\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Zend\\Serializer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover", + "keywords": [ + "ZendFramework", + "serializer", + "zf" + ], + "time": "2018-05-14T18:45:18+00:00" + }, { "name": "zendframework/zend-stratigility", "version": "2.1.2", @@ -2735,6 +3277,54 @@ "psr-7" ], "time": "2017-10-12T13:14:14+00:00" + }, + { + "name": "zendframework/zend-text", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-text.git", + "reference": "ca987dd4594f5f9508771fccd82c89bc7fbb39ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-text/zipball/ca987dd4594f5f9508771fccd82c89bc7fbb39ac", + "reference": "ca987dd4594f5f9508771fccd82c89bc7fbb39ac", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-config": "^2.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7.x-dev", + "dev-develop": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Text\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Create FIGlets and text-based tables", + "keywords": [ + "ZendFramework", + "text", + "zf" + ], + "time": "2018-04-30T14:55:10+00:00" } ], "aliases": [], diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 000000000..756967ece --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,15 @@ +parameters: + fileExtensions: + - php + + excludes_analyse: + - %currentWorkingDirectory%/docs/* + - %currentWorkingDirectory%/test/* + - %currentWorkingDirectory%/vendor/* + + ignoreErrors: + - '#Function zend_monitor_custom_event_ex not found#' + - '#PHPDoc tag @throws with type Zend\\ModuleManager\\Listener\\ServiceListenerInterface is not subtype of Throwable#' + - '#Access to an undefined property Zend\\Http\\Header\\Accept\\FieldValuePart\\AbstractFieldValuePart::\$params#' + - "#Casting to [a-z]+ something that's already [a-z]+#" + From 940576a3da401fc54e1ede6965ea5ce5b60e73ed Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 17:12:55 +0200 Subject: [PATCH 05/20] PHPCS --- src/Service/ServiceListenerFactory.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Service/ServiceListenerFactory.php b/src/Service/ServiceListenerFactory.php index 3b285d7e8..67b9e8a7a 100644 --- a/src/Service/ServiceListenerFactory.php +++ b/src/Service/ServiceListenerFactory.php @@ -130,7 +130,8 @@ public function __invoke(ContainerInterface $container, $requestedName, array $o $serviceListener = new ServiceListener($container); } else { throw new Exception\InvalidArgumentException( - 'No service listener found in container. Unable to create a new one because $container should be an instance of ' . ServiceManager::class + 'No service listener found in container.' + . 'Unable to create a new one because $container should be an instance of ' . ServiceManager::class ); } From d2343711396a6eb10660d9f6673914852a4bcd42 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 17:23:03 +0200 Subject: [PATCH 06/20] Use of UnexpectedValueException::unexpectedType() --- src/Controller/AbstractRestfulController.php | 18 +++--------------- .../Plugin/AcceptableViewModelSelector.php | 4 +--- src/Exception/UnexpectedValueException.php | 14 ++++++++++++++ src/ResponseSender/AbstractResponseSender.php | 6 +----- .../SimpleStreamResponseSender.php | 6 +----- src/View/Http/ExceptionStrategy.php | 6 +----- src/View/Http/RouteNotFoundStrategy.php | 12 ++---------- 7 files changed, 23 insertions(+), 43 deletions(-) diff --git a/src/Controller/AbstractRestfulController.php b/src/Controller/AbstractRestfulController.php index ea9fbf396..390fb5eeb 100644 --- a/src/Controller/AbstractRestfulController.php +++ b/src/Controller/AbstractRestfulController.php @@ -101,11 +101,7 @@ private function getHttpResponse() $response = $this->getResponse(); if (! $response instanceof HttpResponse) { - throw new Exception\UnexpectedValueException(sprintf( - 'Response must be an instance of %s. %s given', - HttpResponse::class, - \is_object($response) ? \get_class($response) : \gettype($response) - )); + throw Exception\UnexpectedValueException::unexpectedType(HttpResponse::class, $response); } return $response; @@ -355,19 +351,11 @@ public function onDispatch(MvcEvent $e) $response = $e->getResponse(); if (! $request instanceof HttpRequest) { - throw new Exception\UnexpectedValueException(sprintf( - 'Request must be an instance of %s. %s given', - HttpRequest::class, - \is_object($request) ? \get_class($request) : \gettype($request) - )); + throw Exception\UnexpectedValueException::unexpectedType(HttpRequest::class, $request); } if (! $response instanceof HttpResponse) { - throw new Exception\UnexpectedValueException(sprintf( - 'Response must be an instance of %s. %s given', - HttpResponse::class, - \is_object($response) ? \get_class($response) : \gettype($response) - )); + throw Exception\UnexpectedValueException::unexpectedType(HttpResponse::class, $response); } // Was an "action" requested? diff --git a/src/Controller/Plugin/AcceptableViewModelSelector.php b/src/Controller/Plugin/AcceptableViewModelSelector.php index 464acfacd..add15f3b7 100644 --- a/src/Controller/Plugin/AcceptableViewModelSelector.php +++ b/src/Controller/Plugin/AcceptableViewModelSelector.php @@ -244,9 +244,7 @@ protected function extractViewModelName(AbstractFieldValuePart $res) { $matchedAgainst = $res->getMatchedAgainst(); if (null === $matchedAgainst) { - throw new UnexpectedValueException(sprintf( - 'Unable to find matchedAgainst value' - )); + throw new UnexpectedValueException('Unable to find matchedAgainst value'); } $modelName = $matchedAgainst->params[self::INJECT_VIEWMODEL_NAME]; return str_replace('|', '\\', $modelName); diff --git a/src/Exception/UnexpectedValueException.php b/src/Exception/UnexpectedValueException.php index 936b686c9..284b697ad 100644 --- a/src/Exception/UnexpectedValueException.php +++ b/src/Exception/UnexpectedValueException.php @@ -9,4 +9,18 @@ class UnexpectedValueException extends \UnexpectedValueException implements ExceptionInterface { + /** + * @param string $expected + * @param mixed $actual + * + * @return UnexpectedValueException + */ + public static function unexpectedType($expected, $actual) + { + return static(sprintf( + 'Expected %s. %s given', + $expected, + \is_object($actual) ? \get_class($actual) : \gettype($actual) + )); + } } diff --git a/src/ResponseSender/AbstractResponseSender.php b/src/ResponseSender/AbstractResponseSender.php index 6ec4554b9..44dd95bb1 100644 --- a/src/ResponseSender/AbstractResponseSender.php +++ b/src/ResponseSender/AbstractResponseSender.php @@ -31,11 +31,7 @@ public function sendHeaders(SendResponseEvent $event) $response = $event->getResponse(); if (! $response instanceof Response) { - throw new UnexpectedValueException(sprintf( - 'Event response must be an instance of %s. %s given', - Response::class, - \is_object($response) ? \get_class($response) : \gettype($response) - )); + throw UnexpectedValueException::unexpectedType(Response::class, $response); } /** @var Headers|HeaderInterface[] $headers */ diff --git a/src/ResponseSender/SimpleStreamResponseSender.php b/src/ResponseSender/SimpleStreamResponseSender.php index b43333fc9..f3f9a0195 100644 --- a/src/ResponseSender/SimpleStreamResponseSender.php +++ b/src/ResponseSender/SimpleStreamResponseSender.php @@ -28,11 +28,7 @@ public function sendStream(SendResponseEvent $event) $response = $event->getResponse(); if (! $response instanceof Stream) { - throw new UnexpectedValueException(sprintf( - 'Event response must be an instance of %s. %s given', - Stream::class, - \is_object($response) ? \get_class($response) : \gettype($response) - )); + throw UnexpectedValueException::unexpectedType(Stream::class, $response); } $stream = $response->getStream(); diff --git a/src/View/Http/ExceptionStrategy.php b/src/View/Http/ExceptionStrategy.php index 9d74b0cfa..71a8e88a9 100644 --- a/src/View/Http/ExceptionStrategy.php +++ b/src/View/Http/ExceptionStrategy.php @@ -137,11 +137,7 @@ public function prepareExceptionViewModel(MvcEvent $e) $response->setStatusCode(500); } } else { - throw new UnexpectedValueException(sprintf( - 'Event response must be an instance of %s. %s given', - HttpResponse::class, - \is_object($response) ? \get_class($response) : \gettype($response) - )); + throw UnexpectedValueException::unexpectedType(HttpResponse::class, $response); } break; diff --git a/src/View/Http/RouteNotFoundStrategy.php b/src/View/Http/RouteNotFoundStrategy.php index 71cdbfc73..65fcee1fe 100644 --- a/src/View/Http/RouteNotFoundStrategy.php +++ b/src/View/Http/RouteNotFoundStrategy.php @@ -151,11 +151,7 @@ public function detectNotFoundError(MvcEvent $e) } if (! $response instanceof HttpResponse) { - throw new UnexpectedValueException(sprintf( - 'Event response must be an instance of %s. %s given', - HttpResponse::class, - \is_object($response) ? \get_class($response) : \gettype($response) - )); + throw UnexpectedValueException::unexpectedType(HttpResponse::class, $response); } $response->setStatusCode(404); @@ -182,11 +178,7 @@ public function prepareNotFoundViewModel(MvcEvent $e) $response = $e->getResponse(); if (! $response instanceof HttpResponse) { - throw new UnexpectedValueException(sprintf( - 'Event response must be an instance of %s. %s given', - HttpResponse::class, - \is_object($response) ? \get_class($response) : \gettype($response) - )); + throw UnexpectedValueException::unexpectedType(HttpResponse::class, $response); } if ($response->getStatusCode() != 404) { From ce87b2ebffbd8d3a8513cdecf85f5890cfa6a0a9 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 17:50:54 +0200 Subject: [PATCH 07/20] Fixed travis config --- .travis.yml | 4 +- composer.json | 1 + composer.lock | 1099 ++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 1034 insertions(+), 70 deletions(-) diff --git a/.travis.yml b/.travis.yml index f778efa4d..24ed050f2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -65,13 +65,13 @@ install: - if [[ $DEPS == 'latest' ]]; then travis_retry composer update $COMPOSER_ARGS ; fi - if [[ $DEPS == 'lowest' ]]; then travis_retry composer update --prefer-lowest --prefer-stable $COMPOSER_ARGS ; fi - if [[ $TEST_COVERAGE == 'true' ]]; then travis_retry composer require --dev $COMPOSER_ARGS $COVERAGE_DEPS ; fi - - if [[ $PHPSTAN_TEST == 'true' ]]; then travis_retry composer require --dev $COMPOSER_ARGS --no-update $PHPSTAN_DEPS ; fi + - if [[ $PHPSTAN_TEST == 'true' ]]; then travis_retry composer require --dev $COMPOSER_ARGS $PHPSTAN_DEPS ; fi - stty cols 120 && composer show script: - if [[ $TEST_COVERAGE == 'true' ]]; then composer test-coverage ; else composer test ; fi - if [[ $CS_CHECK == 'true' ]]; then composer cs-check ; fi - - if [[ $PHPSTAN_TEST == 'true' ]]; then vendor/bin/phpstan analyse -l 7 -c ./phpstan.neon --no-progress . ; fi + - if [[ $PHPSTAN_TEST == 'true' ]]; then ./vendor/bin/phpstan analyse -l 7 -c ./phpstan.neon --no-progress . ; fi after_script: - if [[ $TEST_COVERAGE == 'true' ]]; then vendor/bin/php-coveralls -v ; fi diff --git a/composer.json b/composer.json index 56ad8a19d..a079cbd42 100644 --- a/composer.json +++ b/composer.json @@ -29,6 +29,7 @@ }, "require-dev": { "http-interop/http-middleware": "^0.4.1", + "phpstan/phpstan": "^0.10.3", "phpunit/phpunit": "^6.4.4 || ^5.7.14", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-filter": "^2.6", diff --git a/composer.lock b/composer.lock index 718258bf9..104268d45 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4b4e9cfcf733bcd056bf14c8b44d0498", + "content-hash": "a0a4b022c60782087e41f3b679fad386", "packages": [ { "name": "container-interop/container-interop", @@ -775,6 +775,50 @@ } ], "packages-dev": [ + { + "name": "composer/xdebug-handler", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/b8e9745fb9b06ea6664d8872c4505fb16df4611c", + "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "time": "2018-08-31T19:07:57+00:00" + }, { "name": "doctrine/instantiator", "version": "1.1.0", @@ -793,139 +837,767 @@ "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2017-07-22T11:58:36+00:00" + }, + { + "name": "http-interop/http-middleware", + "version": "0.4.1", + "source": { + "type": "git", + "url": "https://github.com/http-interop/http-middleware.git", + "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/http-interop/http-middleware/zipball/9a801fe60e70d5d608b61d56b2dcde29516c81b9", + "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Interop\\Http\\ServerMiddleware\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "factory", + "http", + "middleware", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "abandoned": "http-interop/http-server-middleware", + "time": "2017-01-14T15:23:42+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "1.2", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/75c7effcf3f77501d0e0caa75111aff4daa0dd48", + "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48", + "shasum": "" + }, + "require": { + "ocramius/package-versions": "^1.2.0", + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A wrapper for ocramius/package-versions to get pretty versions strings", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "time": "2018-06-13T13:22:40+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2017-10-19T19:58:43+00:00" + }, + { + "name": "nette/bootstrap", + "version": "v2.4.6", + "source": { + "type": "git", + "url": "https://github.com/nette/bootstrap.git", + "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/bootstrap/zipball/268816e3f1bb7426c3a4ceec2bd38a036b532543", + "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543", + "shasum": "" + }, + "require": { + "nette/di": "~2.4.7", + "nette/utils": "~2.4", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "latte/latte": "~2.2", + "nette/application": "~2.3", + "nette/caching": "~2.3", + "nette/database": "~2.3", + "nette/forms": "~2.3", + "nette/http": "~2.4.0", + "nette/mail": "~2.3", + "nette/robot-loader": "^2.4.2 || ^3.0", + "nette/safe-stream": "~2.2", + "nette/security": "~2.3", + "nette/tester": "~2.0", + "tracy/tracy": "^2.4.1" + }, + "suggest": { + "nette/robot-loader": "to use Configurator::createRobotLoader()", + "tracy/tracy": "to use Configurator::enableTracy()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.", + "homepage": "https://nette.org", + "keywords": [ + "bootstrapping", + "configurator", + "nette" + ], + "time": "2018-05-17T12:52:20+00:00" + }, + { + "name": "nette/di", + "version": "v2.4.14", + "source": { + "type": "git", + "url": "https://github.com/nette/di.git", + "reference": "923da3e2c0aa53162ef455472c0ac7787b096c5a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/di/zipball/923da3e2c0aa53162ef455472c0ac7787b096c5a", + "reference": "923da3e2c0aa53162ef455472c0ac7787b096c5a", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "nette/neon": "^2.3.3 || ~3.0.0", + "nette/php-generator": "^2.6.1 || ~3.0.0", + "nette/utils": "^2.4.3 || ~3.0.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/bootstrap": "<2.4", + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.", + "homepage": "https://nette.org", + "keywords": [ + "compiled", + "di", + "dic", + "factory", + "ioc", + "nette", + "static" + ], + "time": "2018-09-17T15:47:40+00:00" + }, + { + "name": "nette/finder", + "version": "v2.4.2", + "source": { + "type": "git", + "url": "https://github.com/nette/finder.git", + "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/finder/zipball/ee951a656cb8ac622e5dd33474a01fd2470505a0", + "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0", + "shasum": "" + }, + "require": { + "nette/utils": "~2.4", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🔍 Nette Finder: find files and directories with an intuitive API.", + "homepage": "https://nette.org", + "keywords": [ + "filesystem", + "glob", + "iterator", + "nette" + ], + "time": "2018-06-28T11:49:23+00:00" + }, + { + "name": "nette/neon", + "version": "v2.4.3", + "source": { + "type": "git", + "url": "https://github.com/nette/neon.git", + "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/neon/zipball/5e72b1dd3e2d34f0863c5561139a19df6a1ef398", + "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "ext-json": "*", + "php": ">=5.6.0" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🍸 Nette NEON: encodes and decodes NEON file format.", + "homepage": "http://ne-on.org", + "keywords": [ + "export", + "import", + "neon", + "nette", + "yaml" + ], + "time": "2018-03-21T12:12:21+00:00" + }, + { + "name": "nette/php-generator", + "version": "v3.0.5", + "source": { + "type": "git", + "url": "https://github.com/nette/php-generator.git", + "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/php-generator/zipball/ea90209c2e8a7cd087b2742ca553c047a8df5eff", + "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff", + "shasum": "" + }, + "require": { + "nette/utils": "^2.4.2 || ~3.0.0", + "php": ">=7.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.2 features.", + "homepage": "https://nette.org", + "keywords": [ + "code", + "nette", + "php", + "scaffolding" + ], + "time": "2018-08-09T14:32:27+00:00" + }, + { + "name": "nette/robot-loader", + "version": "v3.1.0", + "source": { + "type": "git", + "url": "https://github.com/nette/robot-loader.git", + "reference": "fc76c70e740b10f091e502b2e393d0be912f38d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/robot-loader/zipball/fc76c70e740b10f091e502b2e393d0be912f38d4", + "reference": "fc76c70e740b10f091e502b2e393d0be912f38d4", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "nette/finder": "^2.3 || ^3.0", + "nette/utils": "^2.4 || ^3.0", + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "^2.0", + "tracy/tracy": "^2.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.", + "homepage": "https://nette.org", + "keywords": [ + "autoload", + "class", + "interface", + "nette", + "trait" + ], + "time": "2018-08-13T14:19:06+00:00" + }, + { + "name": "nette/utils", + "version": "v2.5.3", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/17b9f76f2abd0c943adfb556e56f2165460b15ce", + "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce", + "shasum": "" + }, + "require": { + "php": ">=5.6.0" + }, + "conflict": { + "nette/nette": "<2.2" + }, + "require-dev": { + "nette/tester": "~2.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize() and toAscii()", + "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "2.5-dev" } }, "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } + "classmap": [ + "src/" + ], + "files": [ + "src/loader.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0", + "GPL-3.0" ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", "keywords": [ - "constructor", - "instantiate" - ], - "time": "2017-07-22T11:58:36+00:00" + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "time": "2018-09-18T10:22:16+00:00" }, { - "name": "http-interop/http-middleware", - "version": "0.4.1", + "name": "nikic/php-parser", + "version": "v4.1.0", "source": { "type": "git", - "url": "https://github.com/http-interop/http-middleware.git", - "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "d0230c5c77a7e3cfa69446febf340978540958c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-middleware/zipball/9a801fe60e70d5d608b61d56b2dcde29516c81b9", - "reference": "9a801fe60e70d5d608b61d56b2dcde29516c81b9", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/d0230c5c77a7e3cfa69446febf340978540958c0", + "reference": "d0230c5c77a7e3cfa69446febf340978540958c0", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/http-message": "^1.0" + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.5 || ^7.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "4.1-dev" } }, "autoload": { "psr-4": { - "Interop\\Http\\ServerMiddleware\\": "src/" + "PhpParser\\": "lib/PhpParser" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nikita Popov" } ], - "description": "Common interface for HTTP server-side middleware", + "description": "A PHP parser written in PHP", "keywords": [ - "factory", - "http", - "middleware", - "psr", - "psr-17", - "psr-7", - "request", - "response" + "parser", + "php" ], - "abandoned": "http-interop/http-server-middleware", - "time": "2017-01-14T15:23:42+00:00" + "time": "2018-10-10T09:24:14+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.7.0", + "name": "ocramius/package-versions", + "version": "1.3.0", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "url": "https://github.com/Ocramius/PackageVersions.git", + "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f", + "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "composer-plugin-api": "^1.0.0", + "php": "^7.1.0" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "composer/composer": "^1.6.3", + "ext-zip": "*", + "infection/infection": "^0.7.1", + "phpunit/phpunit": "^7.0.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "2.0.x-dev" + } }, - "type": "library", "autoload": { "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] + "PackageVersions\\": "src/PackageVersions" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } ], - "time": "2017-10-19T19:58:43+00:00" + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "time": "2018-02-05T13:05:30+00:00" }, { "name": "phar-io/manifest", @@ -1238,6 +1910,121 @@ ], "time": "2017-09-04T11:05:03+00:00" }, + { + "name": "phpstan/phpdoc-parser", + "version": "0.3", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "ed3223362174b8067729930439e139794e9e514a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ed3223362174b8067729930439e139794e9e514a", + "reference": "ed3223362174b8067729930439e139794e9e514a", + "shasum": "" + }, + "require": { + "php": "~7.1" + }, + "require-dev": { + "consistence/coding-standard": "^2.0.0", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "phing/phing": "^2.16.0", + "phpstan/phpstan": "^0.10@dev", + "phpunit/phpunit": "^6.3", + "slevomat/coding-standard": "^3.3.0", + "symfony/process": "^3.4 || ^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.3-dev" + } + }, + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "time": "2018-06-20T17:48:01+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "0.10.3", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "dc62f78c9aa6e9f7c44e8d6518f1123cd1e1b1c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dc62f78c9aa6e9f7c44e8d6518f1123cd1e1b1c0", + "reference": "dc62f78c9aa6e9f7c44e8d6518f1123cd1e1b1c0", + "shasum": "" + }, + "require": { + "composer/xdebug-handler": "^1.0", + "jean85/pretty-package-versions": "^1.0.3", + "nette/bootstrap": "^2.4 || ^3.0", + "nette/di": "^2.4.7 || ^3.0", + "nette/robot-loader": "^3.0.1", + "nette/utils": "^2.4.5 || ^3.0", + "nikic/php-parser": "^4.0.2", + "php": "~7.1", + "phpstan/phpdoc-parser": "^0.3", + "symfony/console": "~3.2 || ~4.0", + "symfony/finder": "~3.2 || ~4.0" + }, + "require-dev": { + "brianium/paratest": "^2.0", + "consistence/coding-standard": "^3.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", + "ext-gd": "*", + "ext-intl": "*", + "ext-mysqli": "*", + "ext-zip": "*", + "jakub-onderka/php-parallel-lint": "^1.0", + "localheinz/composer-normalize": "~0.8.0", + "phing/phing": "^2.16.0", + "phpstan/phpstan-deprecation-rules": "^0.10.2", + "phpstan/phpstan-php-parser": "^0.10", + "phpstan/phpstan-phpunit": "^0.10", + "phpstan/phpstan-strict-rules": "^0.10", + "phpunit/phpunit": "^7.0", + "slevomat/coding-standard": "^4.6.2" + }, + "bin": [ + "bin/phpstan" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.10-dev" + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": [ + "src/", + "build/PHPStan" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "time": "2018-08-12T15:14:21+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "5.2.3", @@ -2365,6 +3152,182 @@ ], "time": "2017-05-22T02:43:20+00:00" }, + { + "name": "symfony/console", + "version": "v4.1.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/dc7122fe5f6113cfaba3b3de575d31112c9aa60b", + "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "psr/log-implementation": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-10-03T08:15:46+00:00" + }, + { + "name": "symfony/finder", + "version": "v4.1.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "1f17195b44543017a9c9b2d437c670627e96ad06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/1f17195b44543017a9c9b2d437c670627e96ad06", + "reference": "1f17195b44543017a9c9b2d437c670627e96ad06", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2018-10-03T08:47:56+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", + "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2018-08-06T14:22:27+00:00" + }, { "name": "theseer/tokenizer", "version": "1.1.0", From f2ef81b24dcabba33c97e21dd25c7184196891be Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 18:29:08 +0200 Subject: [PATCH 08/20] Fixed exception --- src/Exception/UnexpectedValueException.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Exception/UnexpectedValueException.php b/src/Exception/UnexpectedValueException.php index 284b697ad..7e3dbe54e 100644 --- a/src/Exception/UnexpectedValueException.php +++ b/src/Exception/UnexpectedValueException.php @@ -17,7 +17,7 @@ class UnexpectedValueException extends \UnexpectedValueException implements Exce */ public static function unexpectedType($expected, $actual) { - return static(sprintf( + return new static(sprintf( 'Expected %s. %s given', $expected, \is_object($actual) ? \get_class($actual) : \gettype($actual) From 6022ee2d748e26ff4dfb4f524385221822a8441b Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 18:35:59 +0200 Subject: [PATCH 09/20] Updated locked dependencies on PHP 7.1 --- composer.json | 1 - composer.lock | 1594 +++++++++++-------------------------------------- 2 files changed, 361 insertions(+), 1234 deletions(-) diff --git a/composer.json b/composer.json index a079cbd42..56ad8a19d 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,6 @@ }, "require-dev": { "http-interop/http-middleware": "^0.4.1", - "phpstan/phpstan": "^0.10.3", "phpunit/phpunit": "^6.4.4 || ^5.7.14", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-filter": "^2.6", diff --git a/composer.lock b/composer.lock index 104268d45..e26a2a450 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a0a4b022c60782087e41f3b679fad386", + "content-hash": "4b4e9cfcf733bcd056bf14c8b44d0498", "packages": [ { "name": "container-interop/container-interop", @@ -88,16 +88,16 @@ }, { "name": "zendframework/zend-config", - "version": "3.1.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-config.git", - "reference": "a12e4a592bf66d9629b84960e268f3752e53abe4" + "reference": "6796f5dcba52c84ef2501d7313618989b5ef3023" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-config/zipball/a12e4a592bf66d9629b84960e268f3752e53abe4", - "reference": "a12e4a592bf66d9629b84960e268f3752e53abe4", + "url": "https://api.github.com/repos/zendframework/zend-config/zipball/6796f5dcba52c84ef2501d7313618989b5ef3023", + "reference": "6796f5dcba52c84ef2501d7313618989b5ef3023", "shasum": "" }, "require": { @@ -110,23 +110,23 @@ "container-interop/container-interop": "<1.2.0" }, "require-dev": { - "malukenho/docheader": "^0.1.5", - "phpunit/phpunit": "^5.7 || ^6.0", + "malukenho/docheader": "^0.1.6", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", "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" + "zendframework/zend-filter": "^2.7.2", + "zendframework/zend-i18n": "^2.7.4", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.3" }, "suggest": { - "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" + "zendframework/zend-filter": "^2.7.2; install if you want to use the Filter processor", + "zendframework/zend-i18n": "^2.7.4; install if you want to use the Translator processor", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.3; if you need an extensible plugin manager for use with the Config Factory" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev", - "dev-develop": "3.2-dev" + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" } }, "autoload": { @@ -139,39 +139,39 @@ "BSD-3-Clause" ], "description": "provides a nested object property based user interface for accessing this configuration data within application code", - "homepage": "https://github.com/zendframework/zend-config", "keywords": [ + "ZendFramework", "config", - "zf2" + "zf" ], - "time": "2017-02-22T14:31:10+00:00" + "time": "2018-04-24T19:26:44+00:00" }, { "name": "zendframework/zend-escaper", - "version": "2.5.2", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-escaper.git", - "reference": "2dcd14b61a72d8b8e27d579c6344e12c26141d4e" + "reference": "31d8aafae982f9568287cb4dce987e6aff8fd074" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/2dcd14b61a72d8b8e27d579c6344e12c26141d4e", - "reference": "2dcd14b61a72d8b8e27d579c6344e12c26141d4e", + "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/31d8aafae982f9568287cb4dce987e6aff8fd074", + "reference": "31d8aafae982f9568287cb4dce987e6aff8fd074", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^5.6 || ^7.0" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "2.6.x-dev", + "dev-develop": "2.7.x-dev" } }, "autoload": { @@ -183,25 +183,26 @@ "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-escaper", + "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", "keywords": [ + "ZendFramework", "escaper", - "zf2" + "zf" ], - "time": "2016-06-30T19:48:38+00:00" + "time": "2018-04-25T15:48:53+00:00" }, { "name": "zendframework/zend-eventmanager", - "version": "3.2.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-eventmanager.git", - "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c" + "reference": "a5e2583a211f73604691586b8406ff7296a946dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/9d72db10ceb6e42fb92350c0cb54460da61bd79c", - "reference": "9d72db10ceb6e42fb92350c0cb54460da61bd79c", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/a5e2583a211f73604691586b8406ff7296a946dd", + "reference": "a5e2583a211f73604691586b8406ff7296a946dd", "shasum": "" }, "require": { @@ -210,7 +211,7 @@ "require-dev": { "athletic/athletic": "^0.1", "container-interop/container-interop": "^1.1.0", - "phpunit/phpunit": "^6.0.7 || ^5.7.14", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-stdlib": "^2.7.3 || ^3.0" }, @@ -242,20 +243,20 @@ "events", "zf2" ], - "time": "2017-07-11T19:17:22+00:00" + "time": "2018-04-25T15:33:34+00:00" }, { "name": "zendframework/zend-http", - "version": "2.7.0", + "version": "2.8.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-http.git", - "reference": "78aa510c0ea64bfb2aa234f50c4f232c9531acfa" + "reference": "2c8aed3d25522618573194e7cc51351f8cd4a45b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-http/zipball/78aa510c0ea64bfb2aa234f50c4f232c9531acfa", - "reference": "78aa510c0ea64bfb2aa234f50c4f232c9531acfa", + "url": "https://api.github.com/repos/zendframework/zend-http/zipball/2c8aed3d25522618573194e7cc51351f8cd4a45b", + "reference": "2c8aed3d25522618573194e7cc51351f8cd4a45b", "shasum": "" }, "require": { @@ -266,15 +267,18 @@ "zendframework/zend-validator": "^2.10.1" }, "require-dev": { - "phpunit/phpunit": "^6.4.1 || ^5.7.15", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.3", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-config": "^3.1 || ^2.6" }, + "suggest": { + "paragonie/certainty": "For automated management of cacert.pem" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev", - "dev-develop": "2.8-dev" + "dev-master": "2.8.x-dev", + "dev-develop": "2.9.x-dev" } }, "autoload": { @@ -286,8 +290,7 @@ "license": [ "BSD-3-Clause" ], - "description": "provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests", - "homepage": "https://github.com/zendframework/zend-http", + "description": "Provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests", "keywords": [ "ZendFramework", "http", @@ -295,34 +298,34 @@ "zend", "zf" ], - "time": "2017-10-13T12:06:24+00:00" + "time": "2018-08-13T18:47:03+00:00" }, { "name": "zendframework/zend-loader", - "version": "2.5.1", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-loader.git", - "reference": "c5fd2f071bde071f4363def7dea8dec7393e135c" + "reference": "78f11749ea340f6ca316bca5958eef80b38f9b6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/c5fd2f071bde071f4363def7dea8dec7393e135c", - "reference": "c5fd2f071bde071f4363def7dea8dec7393e135c", + "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/78f11749ea340f6ca316bca5958eef80b38f9b6c", + "reference": "78f11749ea340f6ca316bca5958eef80b38f9b6c", "shasum": "" }, "require": { - "php": ">=5.3.23" + "php": "^5.6 || ^7.0" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4", + "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "2.6.x-dev", + "dev-develop": "2.7.x-dev" } }, "autoload": { @@ -334,32 +337,33 @@ "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-loader", + "description": "Autoloading and plugin loading strategies", "keywords": [ + "ZendFramework", "loader", - "zf2" + "zf" ], - "time": "2015-06-03T14:05:47+00:00" + "time": "2018-04-30T15:20:54+00:00" }, { "name": "zendframework/zend-modulemanager", - "version": "2.8.1", + "version": "2.8.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-modulemanager.git", - "reference": "710c13353b1ff0975777dbeb39bbf1c85e3353a3" + "reference": "394df6e12248ac430a312d4693f793ee7120baa6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/710c13353b1ff0975777dbeb39bbf1c85e3353a3", - "reference": "710c13353b1ff0975777dbeb39bbf1c85e3353a3", + "url": "https://api.github.com/repos/zendframework/zend-modulemanager/zipball/394df6e12248ac430a312d4693f793ee7120baa6", + "reference": "394df6e12248ac430a312d4693f793ee7120baa6", "shasum": "" }, "require": { "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" + "zendframework/zend-stdlib": "^3.1 || ^2.7" }, "require-dev": { "phpunit/phpunit": "^6.0.8 || ^5.7.15", @@ -367,7 +371,7 @@ "zendframework/zend-console": "^2.6", "zendframework/zend-di": "^2.6", "zendframework/zend-loader": "^2.5", - "zendframework/zend-mvc": "^2.7", + "zendframework/zend-mvc": "^3.0 || ^2.7", "zendframework/zend-servicemanager": "^3.0.3 || ^2.7.5" }, "suggest": { @@ -379,8 +383,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev", - "dev-develop": "2.9-dev" + "dev-master": "2.7-dev", + "dev-develop": "2.8-dev" } }, "autoload": { @@ -392,51 +396,52 @@ "license": [ "BSD-3-Clause" ], + "description": "Modular application system for zend-mvc applications", "homepage": "https://github.com/zendframework/zend-modulemanager", "keywords": [ + "ZendFramework", "modulemanager", - "zf2" + "zf" ], - "time": "2017-11-01T18:30:41+00:00" + "time": "2017-12-02T06:11:18+00:00" }, { "name": "zendframework/zend-router", - "version": "3.0.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-router.git", - "reference": "03763610632a9022aff22a0e8f340852e68392a1" + "reference": "a80a7427afb8f736b9aeeb341a78dae855849291" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-router/zipball/03763610632a9022aff22a0e8f340852e68392a1", - "reference": "03763610632a9022aff22a0e8f340852e68392a1", + "url": "https://api.github.com/repos/zendframework/zend-router/zipball/a80a7427afb8f736b9aeeb341a78dae855849291", + "reference": "a80a7427afb8f736b9aeeb341a78dae855849291", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.1", - "php": "^5.5 || ^7.0", - "zendframework/zend-http": "^2.5", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-stdlib": "^2.7.5 || ^3.0" + "container-interop/container-interop": "^1.2", + "php": "^5.6 || ^7.0", + "zendframework/zend-http": "^2.8.1", + "zendframework/zend-servicemanager": "^2.7.8 || ^3.3", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1" }, "conflict": { "zendframework/zend-mvc": "<3.0.0" }, "require-dev": { - "phpunit/phpunit": "^4.5", - "sebastian/version": "^1.0.4", - "squizlabs/php_codesniffer": "^2.3", - "zendframework/zend-i18n": "^2.6" + "phpunit/phpunit": "^5.7.22 || ^6.4.1", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-i18n": "^2.7.4" }, "suggest": { - "zendframework/zend-i18n": "^2.6, if defining translatable HTTP path segments" + "zendframework/zend-i18n": "^2.7.4, if defining translatable HTTP path segments" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" }, "zf": { "component": "Zend\\Router", @@ -452,26 +457,28 @@ "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-router", + "description": "Flexible routing system for HTTP and console applications", "keywords": [ + "ZendFramework", "mvc", "routing", - "zf2" + "zend", + "zf" ], - "time": "2016-05-31T20:47:48+00:00" + "time": "2018-08-01T22:24:35+00:00" }, { "name": "zendframework/zend-servicemanager", - "version": "3.3.0", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-servicemanager.git", - "reference": "c3036efb81f71bfa36cc9962ee5d4474f36581d0" + "reference": "9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/c3036efb81f71bfa36cc9962ee5d4474f36581d0", - "reference": "c3036efb81f71bfa36cc9962ee5d4474f36581d0", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42", + "reference": "9f35a104b8d4d3b32da5f4a3b6efc0dd62e5af42", "shasum": "" }, "require": { @@ -485,10 +492,10 @@ "psr/container-implementation": "^1.0" }, "require-dev": { - "mikey179/vfsstream": "^1.6", + "mikey179/vfsstream": "^1.6.5", "ocramius/proxy-manager": "^1.0 || ^2.0", - "phpbench/phpbench": "^0.10.0", - "phpunit/phpunit": "^5.7 || ^6.0.6", + "phpbench/phpbench": "^0.13.0", + "phpunit/phpunit": "^5.7.25 || ^6.4.4", "zendframework/zend-coding-standard": "~1.0.0" }, "suggest": { @@ -503,7 +510,7 @@ "extra": { "branch-alias": { "dev-master": "3.3-dev", - "dev-develop": "3.4-dev" + "dev-develop": "4.0-dev" } }, "autoload": { @@ -515,41 +522,46 @@ "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-servicemanager", + "description": "Factory-Driven Dependency Injection Container", "keywords": [ + "PSR-11", + "ZendFramework", + "dependency-injection", + "di", + "dic", "service-manager", "servicemanager", "zf" ], - "time": "2017-03-01T22:08:02+00:00" + "time": "2018-01-29T16:48:37+00:00" }, { "name": "zendframework/zend-stdlib", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-stdlib.git", - "reference": "debedcfc373a293f9250cc9aa03cf121428c8e78" + "reference": "66536006722aff9e62d1b331025089b7ec71c065" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/debedcfc373a293f9250cc9aa03cf121428c8e78", - "reference": "debedcfc373a293f9250cc9aa03cf121428c8e78", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/66536006722aff9e62d1b331025089b7ec71c065", + "reference": "66536006722aff9e62d1b331025089b7ec71c065", "shasum": "" }, "require": { "php": "^5.6 || ^7.0" }, "require-dev": { - "athletic/athletic": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.6.2" + "phpbench/phpbench": "^0.13", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", + "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev", - "dev-develop": "3.2-dev" + "dev-master": "3.2.x-dev", + "dev-develop": "3.3.x-dev" } }, "autoload": { @@ -561,41 +573,42 @@ "license": [ "BSD-3-Clause" ], - "homepage": "https://github.com/zendframework/zend-stdlib", + "description": "SPL extensions, array utilities, error handlers, and more", "keywords": [ + "ZendFramework", "stdlib", - "zf2" + "zf" ], - "time": "2016-09-13T14:38:50+00:00" + "time": "2018-08-28T21:34:05+00:00" }, { "name": "zendframework/zend-uri", - "version": "2.5.2", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/zendframework/zend-uri.git", - "reference": "0bf717a239432b1a1675ae314f7c4acd742749ed" + "reference": "3b6463645c6766f78ce537c70cb4fdabee1e725f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/0bf717a239432b1a1675ae314f7c4acd742749ed", - "reference": "0bf717a239432b1a1675ae314f7c4acd742749ed", + "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/3b6463645c6766f78ce537c70cb4fdabee1e725f", + "reference": "3b6463645c6766f78ce537c70cb4fdabee1e725f", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", + "php": "^5.6 || ^7.0", "zendframework/zend-escaper": "^2.5", - "zendframework/zend-validator": "^2.5" + "zendframework/zend-validator": "^2.10" }, "require-dev": { - "fabpot/php-cs-fixer": "1.7.*", - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4", + "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev", - "dev-develop": "2.6-dev" + "dev-master": "2.6.x-dev", + "dev-develop": "2.7.x-dev" } }, "autoload": { @@ -607,26 +620,26 @@ "license": [ "BSD-3-Clause" ], - "description": "a component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)", - "homepage": "https://github.com/zendframework/zend-uri", + "description": "A component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)", "keywords": [ + "ZendFramework", "uri", - "zf2" + "zf" ], - "time": "2016-02-17T22:38:51+00:00" + "time": "2018-04-30T13:40:08+00:00" }, { "name": "zendframework/zend-validator", - "version": "2.10.1", + "version": "2.10.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-validator.git", - "reference": "010084ddbd33299bf51ea6f0e07f8f4e8bd832a8" + "reference": "38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/010084ddbd33299bf51ea6f0e07f8f4e8bd832a8", - "reference": "010084ddbd33299bf51ea6f0e07f8f4e8bd832a8", + "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9", + "reference": "38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9", "shasum": "" }, "require": { @@ -661,8 +674,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.10-dev", - "dev-develop": "2.11-dev" + "dev-master": "2.10.x-dev", + "dev-develop": "2.11.x-dev" }, "zf": { "component": "Zend\\Validator", @@ -684,20 +697,20 @@ "validator", "zf2" ], - "time": "2017-08-22T14:19:23+00:00" + "time": "2018-02-01T17:05:33+00:00" }, { "name": "zendframework/zend-view", - "version": "2.9.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-view.git", - "reference": "3b6342c381c4437a03fc81d0064c0bb8924914d3" + "reference": "4478cc5dd960e2339d88b363ef99fa278700e80e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-view/zipball/3b6342c381c4437a03fc81d0064c0bb8924914d3", - "reference": "3b6342c381c4437a03fc81d0064c0bb8924914d3", + "url": "https://api.github.com/repos/zendframework/zend-view/zipball/4478cc5dd960e2339d88b363ef99fa278700e80e", + "reference": "4478cc5dd960e2339d88b363ef99fa278700e80e", "shasum": "" }, "require": { @@ -728,7 +741,7 @@ "zendframework/zend-router": "^3.0.1", "zendframework/zend-serializer": "^2.6.1", "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-session": "^2.6.2", + "zendframework/zend-session": "^2.8.1", "zendframework/zend-uri": "^2.5" }, "suggest": { @@ -752,8 +765,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.9-dev", - "dev-develop": "3.0-dev" + "dev-master": "2.10.x-dev", + "dev-develop": "2.11.x-dev" } }, "autoload": { @@ -771,54 +784,10 @@ "view", "zf2" ], - "time": "2017-03-21T15:05:56+00:00" + "time": "2018-01-17T22:21:50+00:00" } ], "packages-dev": [ - { - "name": "composer/xdebug-handler", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/b8e9745fb9b06ea6664d8872c4505fb16df4611c", - "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0", - "psr/log": "^1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "time": "2018-08-31T19:07:57+00:00" - }, { "name": "doctrine/instantiator", "version": "1.1.0", @@ -926,78 +895,30 @@ "abandoned": "http-interop/http-server-middleware", "time": "2017-01-14T15:23:42+00:00" }, - { - "name": "jean85/pretty-package-versions", - "version": "1.2", - "source": { - "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/75c7effcf3f77501d0e0caa75111aff4daa0dd48", - "reference": "75c7effcf3f77501d0e0caa75111aff4daa0dd48", - "shasum": "" - }, - "require": { - "ocramius/package-versions": "^1.2.0", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Jean85\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" - } - ], - "description": "A wrapper for ocramius/package-versions to get pretty versions strings", - "keywords": [ - "composer", - "package", - "release", - "versions" - ], - "time": "2018-06-13T13:22:40+00:00" - }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -1020,584 +941,7 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" - }, - { - "name": "nette/bootstrap", - "version": "v2.4.6", - "source": { - "type": "git", - "url": "https://github.com/nette/bootstrap.git", - "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/bootstrap/zipball/268816e3f1bb7426c3a4ceec2bd38a036b532543", - "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543", - "shasum": "" - }, - "require": { - "nette/di": "~2.4.7", - "nette/utils": "~2.4", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "latte/latte": "~2.2", - "nette/application": "~2.3", - "nette/caching": "~2.3", - "nette/database": "~2.3", - "nette/forms": "~2.3", - "nette/http": "~2.4.0", - "nette/mail": "~2.3", - "nette/robot-loader": "^2.4.2 || ^3.0", - "nette/safe-stream": "~2.2", - "nette/security": "~2.3", - "nette/tester": "~2.0", - "tracy/tracy": "^2.4.1" - }, - "suggest": { - "nette/robot-loader": "to use Configurator::createRobotLoader()", - "tracy/tracy": "to use Configurator::enableTracy()" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.", - "homepage": "https://nette.org", - "keywords": [ - "bootstrapping", - "configurator", - "nette" - ], - "time": "2018-05-17T12:52:20+00:00" - }, - { - "name": "nette/di", - "version": "v2.4.14", - "source": { - "type": "git", - "url": "https://github.com/nette/di.git", - "reference": "923da3e2c0aa53162ef455472c0ac7787b096c5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/di/zipball/923da3e2c0aa53162ef455472c0ac7787b096c5a", - "reference": "923da3e2c0aa53162ef455472c0ac7787b096c5a", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "nette/neon": "^2.3.3 || ~3.0.0", - "nette/php-generator": "^2.6.1 || ~3.0.0", - "nette/utils": "^2.4.3 || ~3.0.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/bootstrap": "<2.4", - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.", - "homepage": "https://nette.org", - "keywords": [ - "compiled", - "di", - "dic", - "factory", - "ioc", - "nette", - "static" - ], - "time": "2018-09-17T15:47:40+00:00" - }, - { - "name": "nette/finder", - "version": "v2.4.2", - "source": { - "type": "git", - "url": "https://github.com/nette/finder.git", - "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/finder/zipball/ee951a656cb8ac622e5dd33474a01fd2470505a0", - "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0", - "shasum": "" - }, - "require": { - "nette/utils": "~2.4", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🔍 Nette Finder: find files and directories with an intuitive API.", - "homepage": "https://nette.org", - "keywords": [ - "filesystem", - "glob", - "iterator", - "nette" - ], - "time": "2018-06-28T11:49:23+00:00" - }, - { - "name": "nette/neon", - "version": "v2.4.3", - "source": { - "type": "git", - "url": "https://github.com/nette/neon.git", - "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/neon/zipball/5e72b1dd3e2d34f0863c5561139a19df6a1ef398", - "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "ext-json": "*", - "php": ">=5.6.0" - }, - "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🍸 Nette NEON: encodes and decodes NEON file format.", - "homepage": "http://ne-on.org", - "keywords": [ - "export", - "import", - "neon", - "nette", - "yaml" - ], - "time": "2018-03-21T12:12:21+00:00" - }, - { - "name": "nette/php-generator", - "version": "v3.0.5", - "source": { - "type": "git", - "url": "https://github.com/nette/php-generator.git", - "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/ea90209c2e8a7cd087b2742ca553c047a8df5eff", - "reference": "ea90209c2e8a7cd087b2742ca553c047a8df5eff", - "shasum": "" - }, - "require": { - "nette/utils": "^2.4.2 || ~3.0.0", - "php": ">=7.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.2 features.", - "homepage": "https://nette.org", - "keywords": [ - "code", - "nette", - "php", - "scaffolding" - ], - "time": "2018-08-09T14:32:27+00:00" - }, - { - "name": "nette/robot-loader", - "version": "v3.1.0", - "source": { - "type": "git", - "url": "https://github.com/nette/robot-loader.git", - "reference": "fc76c70e740b10f091e502b2e393d0be912f38d4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/robot-loader/zipball/fc76c70e740b10f091e502b2e393d0be912f38d4", - "reference": "fc76c70e740b10f091e502b2e393d0be912f38d4", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "nette/finder": "^2.3 || ^3.0", - "nette/utils": "^2.4 || ^3.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "^2.0", - "tracy/tracy": "^2.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.", - "homepage": "https://nette.org", - "keywords": [ - "autoload", - "class", - "interface", - "nette", - "trait" - ], - "time": "2018-08-13T14:19:06+00:00" - }, - { - "name": "nette/utils", - "version": "v2.5.3", - "source": { - "type": "git", - "url": "https://github.com/nette/utils.git", - "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/17b9f76f2abd0c943adfb556e56f2165460b15ce", - "reference": "17b9f76f2abd0c943adfb556e56f2165460b15ce", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "nette/tester": "~2.0", - "tracy/tracy": "^2.3" - }, - "suggest": { - "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize() and toAscii()", - "ext-intl": "for script transliteration in Strings::webalize() and toAscii()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ], - "files": [ - "src/loader.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", - "homepage": "https://nette.org", - "keywords": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "time": "2018-09-18T10:22:16+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.1.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "d0230c5c77a7e3cfa69446febf340978540958c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/d0230c5c77a7e3cfa69446febf340978540958c0", - "reference": "d0230c5c77a7e3cfa69446febf340978540958c0", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.5 || ^7.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "time": "2018-10-10T09:24:14+00:00" - }, - { - "name": "ocramius/package-versions", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/4489d5002c49d55576fa0ba786f42dbb009be46f", - "reference": "4489d5002c49d55576fa0ba786f42dbb009be46f", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0.0", - "php": "^7.1.0" - }, - "require-dev": { - "composer/composer": "^1.6.3", - "ext-zip": "*", - "infection/infection": "^0.7.1", - "phpunit/phpunit": "^7.0.0" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2018-02-05T13:05:30+00:00" + "time": "2018-06-11T23:09:50+00:00" }, { "name": "phar-io/manifest", @@ -1757,29 +1101,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.1.1", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2" + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2d3d238c433cf69caeb4842e97a3223a116f94b2", - "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", "shasum": "" }, "require": { "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/reflection-common": "^1.0.0", "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -1798,7 +1148,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-08-30T18:51:59+00:00" + "time": "2017-11-30T07:14:17+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -1849,33 +1199,33 @@ }, { "name": "phpspec/prophecy", - "version": "v1.7.2", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6" + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", - "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -1908,135 +1258,20 @@ "spy", "stub" ], - "time": "2017-09-04T11:05:03+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "0.3", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "ed3223362174b8067729930439e139794e9e514a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ed3223362174b8067729930439e139794e9e514a", - "reference": "ed3223362174b8067729930439e139794e9e514a", - "shasum": "" - }, - "require": { - "php": "~7.1" - }, - "require-dev": { - "consistence/coding-standard": "^2.0.0", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "phing/phing": "^2.16.0", - "phpstan/phpstan": "^0.10@dev", - "phpunit/phpunit": "^6.3", - "slevomat/coding-standard": "^3.3.0", - "symfony/process": "^3.4 || ^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.3-dev" - } - }, - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "time": "2018-06-20T17:48:01+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "0.10.3", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "dc62f78c9aa6e9f7c44e8d6518f1123cd1e1b1c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dc62f78c9aa6e9f7c44e8d6518f1123cd1e1b1c0", - "reference": "dc62f78c9aa6e9f7c44e8d6518f1123cd1e1b1c0", - "shasum": "" - }, - "require": { - "composer/xdebug-handler": "^1.0", - "jean85/pretty-package-versions": "^1.0.3", - "nette/bootstrap": "^2.4 || ^3.0", - "nette/di": "^2.4.7 || ^3.0", - "nette/robot-loader": "^3.0.1", - "nette/utils": "^2.4.5 || ^3.0", - "nikic/php-parser": "^4.0.2", - "php": "~7.1", - "phpstan/phpdoc-parser": "^0.3", - "symfony/console": "~3.2 || ~4.0", - "symfony/finder": "~3.2 || ~4.0" - }, - "require-dev": { - "brianium/paratest": "^2.0", - "consistence/coding-standard": "^3.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4", - "ext-gd": "*", - "ext-intl": "*", - "ext-mysqli": "*", - "ext-zip": "*", - "jakub-onderka/php-parallel-lint": "^1.0", - "localheinz/composer-normalize": "~0.8.0", - "phing/phing": "^2.16.0", - "phpstan/phpstan-deprecation-rules": "^0.10.2", - "phpstan/phpstan-php-parser": "^0.10", - "phpstan/phpstan-phpunit": "^0.10", - "phpstan/phpstan-strict-rules": "^0.10", - "phpunit/phpunit": "^7.0", - "slevomat/coding-standard": "^4.6.2" - }, - "bin": [ - "bin/phpstan" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.10-dev" - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": [ - "src/", - "build/PHPStan" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "time": "2018-08-12T15:14:21+00:00" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.2.3", + "version": "5.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "8e1d2397d8adf59a3f12b2878a3aaa66d1ab189d" + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/8e1d2397d8adf59a3f12b2878a3aaa66d1ab189d", - "reference": "8e1d2397d8adf59a3f12b2878a3aaa66d1ab189d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", "shasum": "" }, "require": { @@ -2045,14 +1280,13 @@ "php": "^7.0", "phpunit/php-file-iterator": "^1.4.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0", + "phpunit/php-token-stream": "^2.0.1", "sebastian/code-unit-reverse-lookup": "^1.0.1", "sebastian/environment": "^3.0", "sebastian/version": "^2.0.1", "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": "^2.5", "phpunit/phpunit": "^6.0" }, "suggest": { @@ -2061,7 +1295,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.2.x-dev" + "dev-master": "5.3.x-dev" } }, "autoload": { @@ -2076,7 +1310,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2087,20 +1321,20 @@ "testing", "xunit" ], - "time": "2017-11-03T13:47:33+00:00" + "time": "2018-04-06T15:36:58+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", "shasum": "" }, "require": { @@ -2134,7 +1368,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2017-11-27T13:52:08+00:00" }, { "name": "phpunit/php-text-template", @@ -2228,16 +1462,16 @@ }, { "name": "phpunit/php-token-stream", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0" + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9a02332089ac48e704c70f6cefed30c224e3c0b0", - "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { @@ -2273,20 +1507,20 @@ "keywords": [ "tokenizer" ], - "time": "2017-08-20T05:47:52+00:00" + "time": "2017-11-27T05:48:46+00:00" }, { "name": "phpunit/phpunit", - "version": "6.4.4", + "version": "6.5.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "562f7dc75d46510a4ed5d16189ae57fbe45a9932" + "reference": "0973426fb012359b2f18d3bd1e90ef1172839693" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/562f7dc75d46510a4ed5d16189ae57fbe45a9932", - "reference": "562f7dc75d46510a4ed5d16189ae57fbe45a9932", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693", + "reference": "0973426fb012359b2f18d3bd1e90ef1172839693", "shasum": "" }, "require": { @@ -2300,12 +1534,12 @@ "phar-io/version": "^1.0", "php": "^7.0", "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.2.2", - "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", "phpunit/php-text-template": "^1.2.1", "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^4.0.3", - "sebastian/comparator": "^2.0.2", + "phpunit/phpunit-mock-objects": "^5.0.9", + "sebastian/comparator": "^2.1", "sebastian/diff": "^2.0", "sebastian/environment": "^3.1", "sebastian/exporter": "^3.1", @@ -2331,7 +1565,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.4.x-dev" + "dev-master": "6.5.x-dev" } }, "autoload": { @@ -2357,33 +1591,33 @@ "testing", "xunit" ], - "time": "2017-11-08T11:26:09+00:00" + "time": "2018-09-08T15:10:43+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "4.0.4", + "version": "5.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "2f789b59ab89669015ad984afa350c4ec577ade0" + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/2f789b59ab89669015ad984afa350c4ec577ade0", - "reference": "2f789b59ab89669015ad984afa350c4ec577ade0", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", + "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.5", "php": "^7.0", "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.0" + "sebastian/exporter": "^3.1" }, "conflict": { "phpunit/phpunit": "<6.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^6.5.11" }, "suggest": { "ext-soap": "*" @@ -2391,7 +1625,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "5.0.x-dev" } }, "autoload": { @@ -2406,7 +1640,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2416,7 +1650,59 @@ "mock", "xunit" ], - "time": "2017-08-03T14:08:16+00:00" + "time": "2018-08-09T05:50:03+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "378bfe27931ecc54ff824a20d6f6bfc303bbd04c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/378bfe27931ecc54ff824a20d6f6bfc303bbd04c", + "reference": "378bfe27931ecc54ff824a20d6f6bfc303bbd04c", + "shasum": "" + }, + "require": { + "php": ">=7.0.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "time": "2018-07-30T21:54:04+00:00" }, { "name": "psr/http-message", @@ -2562,21 +1848,21 @@ }, { "name": "sebastian/comparator", - "version": "2.1.0", + "version": "2.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1174d9018191e93cb9d719edec01257fc05f8158" + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1174d9018191e93cb9d719edec01257fc05f8158", - "reference": "1174d9018191e93cb9d719edec01257fc05f8158", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", "shasum": "" }, "require": { "php": "^7.0", - "sebastian/diff": "^2.0", + "sebastian/diff": "^2.0 || ^3.0", "sebastian/exporter": "^3.1" }, "require-dev": { @@ -2622,7 +1908,7 @@ "compare", "equality" ], - "time": "2017-11-03T07:16:52+00:00" + "time": "2018-02-01T13:46:46+00:00" }, { "name": "sebastian/diff", @@ -3152,182 +2438,6 @@ ], "time": "2017-05-22T02:43:20+00:00" }, - { - "name": "symfony/console", - "version": "v4.1.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/dc7122fe5f6113cfaba3b3de575d31112c9aa60b", - "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/process": "<3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" - }, - "suggest": { - "psr/log-implementation": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2018-10-03T08:15:46+00:00" - }, - { - "name": "symfony/finder", - "version": "v4.1.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "1f17195b44543017a9c9b2d437c670627e96ad06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/1f17195b44543017a9c9b2d437c670627e96ad06", - "reference": "1f17195b44543017a9c9b2d437c670627e96ad06", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2018-10-03T08:47:56+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.9.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", - "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2018-08-06T14:22:27+00:00" - }, { "name": "theseer/tokenizer", "version": "1.1.0", @@ -3463,16 +2573,16 @@ }, { "name": "webmozart/assert", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + "reference": "0df1908962e7a3071564e857d86874dad1ef204a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", + "reference": "0df1908962e7a3071564e857d86874dad1ef204a", "shasum": "" }, "require": { @@ -3509,7 +2619,7 @@ "check", "validate" ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2018-01-29T19:49:41+00:00" }, { "name": "zendframework/zend-coding-standard", @@ -3595,55 +2705,69 @@ }, { "name": "zendframework/zend-diactoros", - "version": "1.6.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "c8664b92a6d5bc229e48b0923486c097e45a7877" + "reference": "0bae78192e634774b5584f0210c1232da82cb1ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/c8664b92a6d5bc229e48b0923486c097e45a7877", - "reference": "c8664b92a6d5bc229e48b0923486c097e45a7877", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/0bae78192e634774b5584f0210c1232da82cb1ff", + "reference": "0bae78192e634774b5584f0210c1232da82cb1ff", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0", + "php": "^7.1", + "psr/http-factory": "^1.0", "psr/http-message": "^1.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { "ext-dom": "*", "ext-libxml": "*", - "phpunit/phpunit": "^5.7.16 || ^6.0.8", - "zendframework/zend-coding-standard": "~1.0" + "http-interop/http-factory-tests": "^0.5.0", + "php-http/psr7-integration-tests": "dev-master", + "phpunit/phpunit": "^7.0.2", + "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev", - "dev-develop": "1.7-dev" + "dev-master": "2.0.x-dev", + "dev-develop": "2.1.x-dev", + "dev-release-1.8": "1.8.x-dev" } }, "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php" + ], "psr-4": { "Zend\\Diactoros\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "BSD-3-Clause" ], "description": "PSR HTTP Message implementations", - "homepage": "https://github.com/zendframework/zend-diactoros", "keywords": [ "http", "psr", "psr-7" ], - "time": "2017-10-12T15:24:51+00:00" + "time": "2018-09-27T19:49:04+00:00" }, { "name": "zendframework/zend-filter", @@ -3773,37 +2897,34 @@ }, { "name": "zendframework/zend-inputfilter", - "version": "2.8.0", + "version": "2.8.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-inputfilter.git", - "reference": "e7edd625f2fcdd72a719a7023114c5f4b4f38488" + "reference": "3f02179e014d9ef0faccda2ad6c65d38adc338d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/e7edd625f2fcdd72a719a7023114c5f4b4f38488", - "reference": "e7edd625f2fcdd72a719a7023114c5f4b4f38488", + "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/3f02179e014d9ef0faccda2ad6c65d38adc338d8", + "reference": "3f02179e014d9ef0faccda2ad6c65d38adc338d8", "shasum": "" }, "require": { "php": "^5.6 || ^7.0", "zendframework/zend-filter": "^2.6", + "zendframework/zend-servicemanager": "^2.7.10 || ^3.3.1", "zendframework/zend-stdlib": "^2.7 || ^3.0", "zendframework/zend-validator": "^2.10.1" }, "require-dev": { "phpunit/phpunit": "^5.7.23 || ^6.4.3", - "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" + "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev", - "dev-develop": "2.9-dev" + "dev-master": "2.8.x-dev", + "dev-develop": "2.9.x-dev" }, "zf": { "component": "Zend\\InputFilter", @@ -3825,29 +2946,29 @@ "inputfilter", "zf" ], - "time": "2017-12-04T21:24:25+00:00" + "time": "2018-05-14T17:38:03+00:00" }, { "name": "zendframework/zend-json", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-json.git", - "reference": "f42a1588e75c2a3e338cd94c37906231e616daab" + "reference": "4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-json/zipball/f42a1588e75c2a3e338cd94c37906231e616daab", - "reference": "f42a1588e75c2a3e338cd94c37906231e616daab", + "url": "https://api.github.com/repos/zendframework/zend-json/zipball/4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c", + "reference": "4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.3", - "zendframework/zend-stdlib": "^2.7 || ^3.0" + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1" }, "suggest": { "zendframework/zend-json-server": "For implementing JSON-RPC servers", @@ -3856,8 +2977,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" + "dev-master": "3.1.x-dev", + "dev-develop": "3.2.x-dev" } }, "autoload": { @@ -3870,12 +2991,12 @@ "BSD-3-Clause" ], "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", - "homepage": "https://github.com/zendframework/zend-json", "keywords": [ + "ZendFramework", "json", - "zf2" + "zf" ], - "time": "2016-04-01T02:34:00+00:00" + "time": "2018-01-04T17:51:34+00:00" }, { "name": "zendframework/zend-log", @@ -4081,33 +3202,33 @@ }, { "name": "zendframework/zend-psr7bridge", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-psr7bridge.git", - "reference": "935721336ded76fd5ba90ba7637c7d85b4d0cf68" + "reference": "9b46ee86e9360f5fcd61a962381d68bcad7cc881" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-psr7bridge/zipball/935721336ded76fd5ba90ba7637c7d85b4d0cf68", - "reference": "935721336ded76fd5ba90ba7637c7d85b4d0cf68", + "url": "https://api.github.com/repos/zendframework/zend-psr7bridge/zipball/9b46ee86e9360f5fcd61a962381d68bcad7cc881", + "reference": "9b46ee86e9360f5fcd61a962381d68bcad7cc881", "shasum": "" }, "require": { "php": "^5.6 || ^7.0", "psr/http-message": "^1.0", - "zendframework/zend-diactoros": "^1.1", - "zendframework/zend-http": "^2.6" + "zendframework/zend-diactoros": "^1.7 || ^2.0", + "zendframework/zend-http": "^2.7" }, "require-dev": { - "phpunit/phpunit": "^5.7.15 || ^6.0.8", + "phpunit/phpunit": "^5.7.15 || ^6.5.6", "zendframework/zend-coding-standard": "~1.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev", - "dev-develop": "1.1-dev" + "dev-master": "1.1.x-dev", + "dev-develop": "1.2.x-dev" } }, "autoload": { @@ -4119,16 +3240,16 @@ "license": [ "BSD-3-Clause" ], - "description": "PSR-7 <-> Zend\\Http bridge", - "homepage": "https://github.com/zendframework/zend-psr7bridge", + "description": "PSR-7 <-> zend-http message conversions", "keywords": [ "ZendFramework", "http", "psr", "psr-7", - "zend" + "zend", + "zf" ], - "time": "2017-08-02T15:52:02+00:00" + "time": "2018-09-27T21:12:00+00:00" }, { "name": "zendframework/zend-serializer", @@ -4189,27 +3310,27 @@ }, { "name": "zendframework/zend-stratigility", - "version": "2.1.2", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/zendframework/zend-stratigility.git", - "reference": "7dfec8dee92dad0d01e68365015f2848c250fe9f" + "reference": "840e41d1984e8845c5539c769fedc5e7bb00a4d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-stratigility/zipball/7dfec8dee92dad0d01e68365015f2848c250fe9f", - "reference": "7dfec8dee92dad0d01e68365015f2848c250fe9f", + "url": "https://api.github.com/repos/zendframework/zend-stratigility/zipball/840e41d1984e8845c5539c769fedc5e7bb00a4d5", + "reference": "840e41d1984e8845c5539c769fedc5e7bb00a4d5", "shasum": "" }, "require": { "php": "^5.6 || ^7.0", "psr/http-message": "^1.0", - "webimpress/http-middleware-compatibility": "^0.1.3", + "webimpress/http-middleware-compatibility": "^0.1.4", "zendframework/zend-escaper": "^2.3" }, "require-dev": { "malukenho/docheader": "^0.1.5", - "phpunit/phpunit": "^6.0.8 || ^5.7.15", + "phpunit/phpunit": "^5.7.22 || ^6.4.1", "zendframework/zend-coding-standard": "~1.0.0", "zendframework/zend-diactoros": "^1.0" }, @@ -4219,11 +3340,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.0-dev", - "dev-develop": "2.2.0-dev" + "dev-master": "2.2.x-dev", + "dev-develop": "3.0.x-dev" } }, "autoload": { + "files": [ + "src/functions/double-pass-middleware.php", + "src/functions/middleware.php", + "src/functions/path.php" + ], "psr-4": { "Zend\\Stratigility\\": "src/" } @@ -4235,11 +3361,13 @@ "description": "Middleware for PHP", "homepage": "https://github.com/zendframework/zend-stratigility", "keywords": [ + "ZendFramework", "http", "middleware", - "psr-7" + "psr-7", + "zf" ], - "time": "2017-10-12T13:14:14+00:00" + "time": "2018-04-16T18:22:03+00:00" }, { "name": "zendframework/zend-text", From 6d5733d1b49208563351de52f5f92d475c076072 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 18:40:11 +0200 Subject: [PATCH 10/20] Locked dependencies on PHP 5.6 --- composer.lock | 648 ++++++++++++++++++++------------------------------ 1 file changed, 256 insertions(+), 392 deletions(-) diff --git a/composer.lock b/composer.lock index e26a2a450..b95461a99 100644 --- a/composer.lock +++ b/composer.lock @@ -790,32 +790,32 @@ "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.1.0", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=5.3,<8.0-DEV" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -840,7 +840,7 @@ "constructor", "instantiate" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "http-interop/http-middleware", @@ -897,28 +897,25 @@ }, { "name": "myclabs/deep-copy", - "version": "1.8.1", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", "shasum": "" }, "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" + "php": "^5.6 || ^7.0" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^4.1" }, "type": "library", "autoload": { @@ -941,109 +938,7 @@ "object", "object graph" ], - "time": "2018-06-11T23:09:50+00:00" - }, - { - "name": "phar-io/manifest", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", - "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "phar-io/version": "^1.0.1", - "php": "^5.6 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" - }, - { - "name": "phar-io/version", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", - "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" + "time": "2017-10-19T19:58:43+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1101,35 +996,29 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", "shasum": "" }, "require": { - "php": "^7.0", + "php": "^5.6 || ^7.0", "phpdocumentor/reflection-common": "^1.0.0", "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -1148,7 +1037,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "time": "2017-11-10T14:09:06+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -1262,40 +1151,40 @@ }, { "name": "phpunit/php-code-coverage", - "version": "5.3.2", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac" + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", - "reference": "c89677919c5dd6d3b3852f230a663118762218ac", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.0", - "phpunit/php-file-iterator": "^1.4.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^2.0.1", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.0", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" + "php": "^5.6 || ^7.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" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "ext-xdebug": "^2.1.4", + "phpunit/phpunit": "^5.7" }, "suggest": { - "ext-xdebug": "^2.5.5" + "ext-xdebug": "^2.5.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.3.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -1310,7 +1199,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", + "email": "sb@sebastian-bergmann.de", "role": "lead" } ], @@ -1321,7 +1210,7 @@ "testing", "xunit" ], - "time": "2018-04-06T15:36:58+00:00" + "time": "2017-04-02T07:44:40+00:00" }, { "name": "phpunit/php-file-iterator", @@ -1462,29 +1351,29 @@ }, { "name": "phpunit/php-token-stream", - "version": "2.0.2", + "version": "1.4.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "~4.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -1507,20 +1396,20 @@ "keywords": [ "tokenizer" ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2017-12-04T08:55:13+00:00" }, { "name": "phpunit/phpunit", - "version": "6.5.13", + "version": "5.7.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0973426fb012359b2f18d3bd1e90ef1172839693" + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693", - "reference": "0973426fb012359b2f18d3bd1e90ef1172839693", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", "shasum": "" }, "require": { @@ -1529,35 +1418,33 @@ "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.6.1", - "phar-io/manifest": "^1.0.1", - "phar-io/version": "^1.0", - "php": "^7.0", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.3", - "phpunit/php-file-iterator": "^1.4.3", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^5.0.9", - "sebastian/comparator": "^2.1", - "sebastian/diff": "^2.0", - "sebastian/environment": "^3.1", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^1.0", - "sebastian/version": "^2.0.1" + "myclabs/deep-copy": "~1.3", + "php": "^5.6 || ^7.0", + "phpspec/prophecy": "^1.6.2", + "phpunit/php-code-coverage": "^4.0.4", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "^3.2", + "sebastian/comparator": "^1.2.4", + "sebastian/diff": "^1.4.3", + "sebastian/environment": "^1.3.4 || ^2.0", + "sebastian/exporter": "~2.0", + "sebastian/global-state": "^1.1", + "sebastian/object-enumerator": "~2.0", + "sebastian/resource-operations": "~1.0", + "sebastian/version": "^1.0.6|^2.0.1", + "symfony/yaml": "~2.1|~3.0|~4.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2", - "phpunit/dbunit": "<3.0" + "phpdocumentor/reflection-docblock": "3.0.2" }, "require-dev": { "ext-pdo": "*" }, "suggest": { "ext-xdebug": "*", - "phpunit/php-invoker": "^1.1" + "phpunit/php-invoker": "~1.1" }, "bin": [ "phpunit" @@ -1565,7 +1452,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.5.x-dev" + "dev-master": "5.7.x-dev" } }, "autoload": { @@ -1591,33 +1478,33 @@ "testing", "xunit" ], - "time": "2018-09-08T15:10:43+00:00" + "time": "2018-02-01T05:50:59+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "5.0.10", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", - "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", + "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.5", - "php": "^7.0", - "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.1" + "doctrine/instantiator": "^1.0.2", + "php": "^5.6 || ^7.0", + "phpunit/php-text-template": "^1.2", + "sebastian/exporter": "^1.2 || ^2.0" }, "conflict": { - "phpunit/phpunit": "<6.0" + "phpunit/phpunit": "<5.4.0" }, "require-dev": { - "phpunit/phpunit": "^6.5.11" + "phpunit/phpunit": "^5.4" }, "suggest": { "ext-soap": "*" @@ -1625,7 +1512,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-master": "3.2.x-dev" } }, "autoload": { @@ -1640,7 +1527,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", + "email": "sb@sebastian-bergmann.de", "role": "lead" } ], @@ -1650,59 +1537,7 @@ "mock", "xunit" ], - "time": "2018-08-09T05:50:03+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "378bfe27931ecc54ff824a20d6f6bfc303bbd04c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/378bfe27931ecc54ff824a20d6f6bfc303bbd04c", - "reference": "378bfe27931ecc54ff824a20d6f6bfc303bbd04c", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "time": "2018-07-30T21:54:04+00:00" + "time": "2017-06-30T09:13:00+00:00" }, { "name": "psr/http-message", @@ -1848,30 +1683,30 @@ }, { "name": "sebastian/comparator", - "version": "2.1.3", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", - "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/diff": "^2.0 || ^3.0", - "sebastian/exporter": "^3.1" + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" }, "require-dev": { - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1902,38 +1737,38 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", + "homepage": "http://www.github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2018-02-01T13:46:46+00:00" + "time": "2017-01-29T09:50:25+00:00" }, { "name": "sebastian/diff", - "version": "2.0.1", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", - "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^5.3.3 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -1960,32 +1795,32 @@ "keywords": [ "diff" ], - "time": "2017-08-03T08:09:46+00:00" + "time": "2017-05-22T07:24:03+00:00" }, { "name": "sebastian/environment", - "version": "3.1.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", - "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^6.1" + "phpunit/phpunit": "^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2010,34 +1845,34 @@ "environment", "hhvm" ], - "time": "2017-07-01T08:51:00+00:00" + "time": "2016-11-26T07:53:53+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2077,27 +1912,27 @@ "export", "exporter" ], - "time": "2017-04-03T13:19:02+00:00" + "time": "2016-11-19T08:54:04+00:00" }, { "name": "sebastian/global-state", - "version": "2.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "~4.2" }, "suggest": { "ext-uopz": "*" @@ -2105,7 +1940,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -2128,34 +1963,33 @@ "keywords": [ "global state" ], - "time": "2017-04-27T15:39:26+00:00" + "time": "2015-10-12T03:26:01+00:00" }, { "name": "sebastian/object-enumerator", - "version": "3.0.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", + "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", "shasum": "" }, "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" + "php": ">=5.6", + "sebastian/recursion-context": "~2.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "~5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2175,77 +2009,32 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" + "time": "2017-02-18T15:18:39+00:00" }, { "name": "sebastian/recursion-context", - "version": "3.0.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", "shasum": "" }, "require": { - "php": "^7.0" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2273,7 +2062,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" + "time": "2016-11-19T07:33:16+00:00" }, { "name": "sebastian/resource-operations", @@ -2439,44 +2228,121 @@ "time": "2017-05-22T02:43:20+00:00" }, { - "name": "theseer/tokenizer", - "version": "1.1.0", + "name": "symfony/polyfill-ctype", + "version": "v1.9.0", "source": { "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.0" + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" } ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/yaml", + "version": "v3.4.17", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/640b6c27fed4066d64b64d5903a86043f4a4de7f", + "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-10-02T16:33:53+00:00" }, { "name": "webimpress/composer-extra-dependency", @@ -2705,41 +2571,38 @@ }, { "name": "zendframework/zend-diactoros", - "version": "2.0.0", + "version": "1.8.6", "source": { "type": "git", "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "0bae78192e634774b5584f0210c1232da82cb1ff" + "reference": "20da13beba0dde8fb648be3cc19765732790f46e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/0bae78192e634774b5584f0210c1232da82cb1ff", - "reference": "0bae78192e634774b5584f0210c1232da82cb1ff", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", + "reference": "20da13beba0dde8fb648be3cc19765732790f46e", "shasum": "" }, "require": { - "php": "^7.1", - "psr/http-factory": "^1.0", + "php": "^5.6 || ^7.0", "psr/http-message": "^1.0" }, "provide": { - "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { "ext-dom": "*", "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.5.0", "php-http/psr7-integration-tests": "dev-master", - "phpunit/phpunit": "^7.0.2", - "zendframework/zend-coding-standard": "~1.0.0" + "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", + "zendframework/zend-coding-standard": "~1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev", - "dev-develop": "2.1.x-dev", - "dev-release-1.8": "1.8.x-dev" + "dev-master": "1.8.x-dev", + "dev-develop": "1.9.x-dev", + "dev-release-2.0": "2.0.x-dev" } }, "autoload": { @@ -2759,15 +2622,16 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "BSD-2-Clause" ], "description": "PSR HTTP Message implementations", + "homepage": "https://github.com/zendframework/zend-diactoros", "keywords": [ "http", "psr", "psr-7" ], - "time": "2018-09-27T19:49:04+00:00" + "time": "2018-09-05T19:29:37+00:00" }, { "name": "zendframework/zend-filter", From 498163d81a60f95c31340ac19153cb95aa655113 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 19:06:59 +0200 Subject: [PATCH 11/20] Added HttpDefaultRenderingStrategyFactoryTest --- ...ttpDefaultRenderingStrategyFactoryTest.php | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 test/Service/HttpDefaultRenderingStrategyFactoryTest.php diff --git a/test/Service/HttpDefaultRenderingStrategyFactoryTest.php b/test/Service/HttpDefaultRenderingStrategyFactoryTest.php new file mode 100644 index 000000000..1851aaac6 --- /dev/null +++ b/test/Service/HttpDefaultRenderingStrategyFactoryTest.php @@ -0,0 +1,63 @@ +serviceLocator = $this->prophesize(ContainerInterface::class); + } + + public function testInvoke() + { + $factory = new HttpDefaultRenderingStrategyFactory(); + + $view = $this->prophesize(View::class); + $this->serviceLocator->get(View::class) + ->willReturn($view->reveal()); + + $this->serviceLocator->has('config')->willReturn(true); + $this->serviceLocator->get('config') + ->willReturn([ + 'view_manager' => [ + 'layout' => 'foo', + ], + ]); + + $instance = $factory($this->serviceLocator->reveal(), 'foo'); + + $this->assertInstanceOf(DefaultRenderingStrategy::class, $instance); + $this->assertSame('foo', $instance->getLayoutTemplate()); + } + + public function testInvokeWithEmptyObject() + { + $factory = new HttpDefaultRenderingStrategyFactory(); + + $view = $this->prophesize(View::class); + $this->serviceLocator->get(View::class) + ->willReturn($view->reveal()); + + $this->serviceLocator->has('config')->willReturn(true); + $this->serviceLocator->get('config') + ->willReturn([]); + + $instance = $factory($this->serviceLocator->reveal(), 'foo'); + + $this->assertInstanceOf(DefaultRenderingStrategy::class, $instance); + $this->assertSame('layout/layout', $instance->getLayoutTemplate()); + } +} From 4ab30bfdcaa7a08a5a3cb237f5421a5e6ff7e3e1 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 19:25:30 +0200 Subject: [PATCH 12/20] Fixed return type --- src/Service/HttpViewManagerConfigTrait.php | 16 +++++++----- ...ttpDefaultRenderingStrategyFactoryTest.php | 26 +++++++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/Service/HttpViewManagerConfigTrait.php b/src/Service/HttpViewManagerConfigTrait.php index 8ce67daa8..d5952983b 100644 --- a/src/Service/HttpViewManagerConfigTrait.php +++ b/src/Service/HttpViewManagerConfigTrait.php @@ -16,17 +16,21 @@ trait HttpViewManagerConfigTrait * Retrieve view_manager configuration, if present. * * @param ContainerInterface $container - * @return array|ArrayAccess + * @return array */ private function getConfig(ContainerInterface $container) { $config = $container->has('config') ? $container->get('config') : []; - if (isset($config['view_manager']) - && (is_array($config['view_manager']) - || $config['view_manager'] instanceof ArrayAccess - ) - ) { + if (! isset($config['view_manager'])) { + return []; + } + + if ($config['view_manager'] instanceof ArrayAccess) { + return (array) $config['view_manager']; + } + + if (\is_array($config['view_manager'])) { return $config['view_manager']; } diff --git a/test/Service/HttpDefaultRenderingStrategyFactoryTest.php b/test/Service/HttpDefaultRenderingStrategyFactoryTest.php index 1851aaac6..51802ba90 100644 --- a/test/Service/HttpDefaultRenderingStrategyFactoryTest.php +++ b/test/Service/HttpDefaultRenderingStrategyFactoryTest.php @@ -43,6 +43,32 @@ public function testInvoke() $this->assertSame('foo', $instance->getLayoutTemplate()); } + public function testInvokeWithArrayAccessConfig() + { + $factory = new HttpDefaultRenderingStrategyFactory(); + + $view = $this->prophesize(View::class); + $this->serviceLocator->get(View::class) + ->willReturn($view->reveal()); + + $this->serviceLocator->has('config')->willReturn(true); + $this->serviceLocator->get('config') + ->shouldBeCalled() + ->willReturn(new \ArrayObject([ + 'view_manager' => [ + 'layout' => 'foo', + ], + ])); + + $factory->gett(); + + /** @var DefaultRenderingStrategy $instance */ + $instance = $factory($this->serviceLocator->reveal(), 'foo'); + + $this->assertInstanceOf(DefaultRenderingStrategy::class, $instance); + $this->assertSame('foo', $instance->getLayoutTemplate()); + } + public function testInvokeWithEmptyObject() { $factory = new HttpDefaultRenderingStrategyFactory(); From bbefcb8c38044f470ea557e5485d687ea172f162 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 19:26:32 +0200 Subject: [PATCH 13/20] Removed debug code --- test/Service/HttpDefaultRenderingStrategyFactoryTest.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/Service/HttpDefaultRenderingStrategyFactoryTest.php b/test/Service/HttpDefaultRenderingStrategyFactoryTest.php index 51802ba90..08720d162 100644 --- a/test/Service/HttpDefaultRenderingStrategyFactoryTest.php +++ b/test/Service/HttpDefaultRenderingStrategyFactoryTest.php @@ -60,8 +60,6 @@ public function testInvokeWithArrayAccessConfig() ], ])); - $factory->gett(); - /** @var DefaultRenderingStrategy $instance */ $instance = $factory($this->serviceLocator->reveal(), 'foo'); From ba0fb92dc81d321d88914d720c94842e35b3273e Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 22:28:01 +0200 Subject: [PATCH 14/20] phpstan parameters in phpstan.neon config --- .gitattributes | 2 +- .gitignore | 1 + .travis.yml | 2 +- phpstan.neon => phpstan.neon.dist | 2 ++ 4 files changed, 5 insertions(+), 2 deletions(-) rename phpstan.neon => phpstan.neon.dist (97%) diff --git a/.gitattributes b/.gitattributes index a6bd07a41..ef2513dc9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8,4 +8,4 @@ /phpcs.xml export-ignore /phpunit.xml.dist export-ignore /test/ export-ignore -/phpstan.neon export-ignore +/phpstan.neon.dist export-ignore diff --git a/.gitignore b/.gitignore index 245087af8..ba75cfde2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /coveralls-upload.json /docs/html/ /phpunit.xml +/phpstan.neon /vendor/ /zf-mkdoc-theme.tgz /zf-mkdoc-theme/ diff --git a/.travis.yml b/.travis.yml index 24ed050f2..6078afe2c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -71,7 +71,7 @@ install: script: - if [[ $TEST_COVERAGE == 'true' ]]; then composer test-coverage ; else composer test ; fi - if [[ $CS_CHECK == 'true' ]]; then composer cs-check ; fi - - if [[ $PHPSTAN_TEST == 'true' ]]; then ./vendor/bin/phpstan analyse -l 7 -c ./phpstan.neon --no-progress . ; fi + - if [[ $PHPSTAN_TEST == 'true' ]]; then ./vendor/bin/phpstan analyse --no-progress . ; fi after_script: - if [[ $TEST_COVERAGE == 'true' ]]; then vendor/bin/php-coveralls -v ; fi diff --git a/phpstan.neon b/phpstan.neon.dist similarity index 97% rename from phpstan.neon rename to phpstan.neon.dist index 756967ece..60a6e0d07 100644 --- a/phpstan.neon +++ b/phpstan.neon.dist @@ -1,4 +1,6 @@ parameters: + level: 7 + fileExtensions: - php From 511962ee814b81b8ade9bdcc60114540831ea2e8 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 23:15:44 +0200 Subject: [PATCH 15/20] Exceptions test --- .../InvalidArgumentExceptionTest.php | 24 +++++++++++++++++++ .../UnexpectedValueExceptionTest.php | 24 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 test/Exception/InvalidArgumentExceptionTest.php create mode 100644 test/Exception/UnexpectedValueExceptionTest.php diff --git a/test/Exception/InvalidArgumentExceptionTest.php b/test/Exception/InvalidArgumentExceptionTest.php new file mode 100644 index 000000000..2cc1bc63c --- /dev/null +++ b/test/Exception/InvalidArgumentExceptionTest.php @@ -0,0 +1,24 @@ +assertSame('Expected foo. ArrayObject given', $exception->getMessage()); + } + + public function testUnexpectedTypeWithScalarType() + { + $exception = InvalidArgumentException::unexpectedType('foo', 5); + + $this->assertSame('Expected foo. integer given', $exception->getMessage()); + } +} diff --git a/test/Exception/UnexpectedValueExceptionTest.php b/test/Exception/UnexpectedValueExceptionTest.php new file mode 100644 index 000000000..e553666ab --- /dev/null +++ b/test/Exception/UnexpectedValueExceptionTest.php @@ -0,0 +1,24 @@ +assertSame('Expected foo. ArrayObject given', $exception->getMessage()); + } + + public function testUnexpectedTypeWithScalarType() + { + $exception = UnexpectedValueException::unexpectedType('foo', 5); + + $this->assertSame('Expected foo. integer given', $exception->getMessage()); + } +} From 7f20264b1b128edb7bdf99a291df7111f5b7cfff Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 23:16:12 +0200 Subject: [PATCH 16/20] Improved exceptions an readability --- src/Controller/AbstractRestfulController.php | 24 ++------ .../Plugin/AcceptableViewModelSelector.php | 7 +-- src/Exception/InvalidArgumentException.php | 14 +++++ src/MiddlewareListener.php | 4 +- src/Service/ApplicationFactory.php | 6 +- src/View/Http/ExceptionStrategy.php | 56 +++++++++++-------- 6 files changed, 54 insertions(+), 57 deletions(-) diff --git a/src/Controller/AbstractRestfulController.php b/src/Controller/AbstractRestfulController.php index 390fb5eeb..ffb956581 100644 --- a/src/Controller/AbstractRestfulController.php +++ b/src/Controller/AbstractRestfulController.php @@ -487,11 +487,7 @@ public function onDispatch(MvcEvent $e) public function processPostData(Request $request) { if (! $request instanceof HttpRequest) { - throw new Exception\InvalidArgumentException(sprintf( - 'Request must be an instance of %s. %s given', - HttpRequest::class, - \is_object($request) ? \get_class($request) : \gettype($request) - )); + throw Exception\InvalidArgumentException::unexpectedType(HttpRequest::class, $request); } if ($this->requestHasContentType($request, self::CONTENT_TYPE_JSON)) { @@ -511,11 +507,7 @@ public function processPostData(Request $request) public function requestHasContentType(Request $request, $contentType = '') { if (! $request instanceof HttpRequest) { - throw new Exception\InvalidArgumentException(sprintf( - 'Request must be an instance of %s. %s given', - HttpRequest::class, - \is_object($request) ? \get_class($request) : \gettype($request) - )); + throw Exception\InvalidArgumentException::unexpectedType(HttpRequest::class, $request); } /** @var Headers $headers */ @@ -596,19 +588,11 @@ public function addHttpMethodHandler($method, /* Callable */ $handler) protected function getIdentifier($routeMatch, $request) { if (! $routeMatch instanceof RouteMatch) { - throw new Exception\InvalidArgumentException(sprintf( - 'RouteMatch must be an instance of %s. %s given', - RouteMatch::class, - \is_object($routeMatch) ? \get_class($routeMatch) : \gettype($routeMatch) - )); + throw Exception\InvalidArgumentException::unexpectedType(RouteMatch::class, $routeMatch); } if (! $request instanceof HttpRequest) { - throw new Exception\InvalidArgumentException(sprintf( - 'Request must be an instance of %s. %s given', - HttpRequest::class, - \is_object($request) ? \get_class($request) : \gettype($request) - )); + throw Exception\InvalidArgumentException::unexpectedType(HttpRequest::class, $request); } $identifier = $this->getIdentifierName(); diff --git a/src/Controller/Plugin/AcceptableViewModelSelector.php b/src/Controller/Plugin/AcceptableViewModelSelector.php index add15f3b7..8463a4405 100644 --- a/src/Controller/Plugin/AcceptableViewModelSelector.php +++ b/src/Controller/Plugin/AcceptableViewModelSelector.php @@ -100,12 +100,7 @@ public function getViewModel( $viewModel = new $name(); if (! $viewModel instanceof ModelInterface) { - throw new InvalidArgumentException(sprintf( - 'The supplied View Model is not an instance of %s. %s created for "%s"', - ModelInterface::class, - \is_object($viewModel) ? \get_class($viewModel) : \gettype($viewModel), - $name - )); + throw InvalidArgumentException::unexpectedType(ModelInterface::class, $viewModel); } return $viewModel; diff --git a/src/Exception/InvalidArgumentException.php b/src/Exception/InvalidArgumentException.php index fd7c910cd..f9eef9f4e 100644 --- a/src/Exception/InvalidArgumentException.php +++ b/src/Exception/InvalidArgumentException.php @@ -9,4 +9,18 @@ class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface { + /** + * @param string $expected + * @param mixed $actual + * + * @return InvalidArgumentException + */ + public static function unexpectedType($expected, $actual) + { + return new static(sprintf( + 'Expected %s. %s given', + $expected, + \is_object($actual) ? \get_class($actual) : \gettype($actual) + )); + } } diff --git a/src/MiddlewareListener.php b/src/MiddlewareListener.php index f21da81f3..3ff5e4c59 100644 --- a/src/MiddlewareListener.php +++ b/src/MiddlewareListener.php @@ -66,14 +66,14 @@ public function onDispatch(MvcEvent $event) } if (! $application instanceof Application) { - throw new RuntimeException('Application is not an instance of ' . Application::class); + throw UnexpectedValueException::unexpectedType(Application::class, $application); } $response = $application->getResponse(); $serviceManager = $application->getServiceManager(); if (! $response instanceof Response) { - throw new RuntimeException('Application response is not an instance of ' . Response::class); + throw UnexpectedValueException::unexpectedType(Response::class, $response); } $psr7ResponsePrototype = Psr7Response::fromZend($response); diff --git a/src/Service/ApplicationFactory.php b/src/Service/ApplicationFactory.php index c54ca3304..8fce9851d 100644 --- a/src/Service/ApplicationFactory.php +++ b/src/Service/ApplicationFactory.php @@ -29,11 +29,7 @@ class ApplicationFactory implements FactoryInterface public function __invoke(ContainerInterface $container, $name, array $options = null) { if (! $container instanceof ServiceManager) { - throw new InvalidArgumentException(sprintf( - 'Container must be an instance of %s. %s given', - ServiceManager::class, - \is_object($container) ? \get_class($container) : \gettype($container) - )); + throw InvalidArgumentException::unexpectedType(ServiceManager::class, $container); } return new Application( diff --git a/src/View/Http/ExceptionStrategy.php b/src/View/Http/ExceptionStrategy.php index 71a8e88a9..d2f55227d 100644 --- a/src/View/Http/ExceptionStrategy.php +++ b/src/View/Http/ExceptionStrategy.php @@ -11,7 +11,6 @@ use Zend\EventManager\EventManagerInterface; use Zend\Http\Response as HttpResponse; use Zend\Mvc\Application; -use Zend\Mvc\Exception\RuntimeException; use Zend\Mvc\Exception\UnexpectedValueException; use Zend\Mvc\MvcEvent; use Zend\Stdlib\ResponseInterface as Response; @@ -118,29 +117,38 @@ public function prepareExceptionViewModel(MvcEvent $e) case Application::ERROR_EXCEPTION: default: - $model = new ViewModel([ - 'message' => 'An error occurred during execution; please try again later.', - 'exception' => $e->getParam('exception'), - 'display_exceptions' => $this->displayExceptions(), - ]); - $model->setTemplate($this->getExceptionTemplate()); - $e->setResult($model); - - $response = $e->getResponse(); - if (! $response) { - $response = new HttpResponse(); - $response->setStatusCode(500); - $e->setResponse($response); - } elseif ($response instanceof HttpResponse) { - $statusCode = $response->getStatusCode(); - if ($statusCode === 200) { - $response->setStatusCode(500); - } - } else { - throw UnexpectedValueException::unexpectedType(HttpResponse::class, $response); - } - - break; + $this->handleExceptionViewModel($e); } } + + private function handleExceptionViewModel(MvcEvent $e) + { + $model = new ViewModel([ + 'message' => 'An error occurred during execution; please try again later.', + 'exception' => $e->getParam('exception'), + 'display_exceptions' => $this->displayExceptions(), + ]); + $model->setTemplate($this->getExceptionTemplate()); + $e->setResult($model); + + $response = $e->getResponse(); + if (! $response) { + $response = new HttpResponse(); + $response->setStatusCode(500); + $e->setResponse($response); + + return; + } + + if ($response instanceof HttpResponse) { + $statusCode = $response->getStatusCode(); + if ($statusCode === 200) { + $response->setStatusCode(500); + } + + return; + } + + throw UnexpectedValueException::unexpectedType(HttpResponse::class, $response); + } } From 09a0ebe6ed19483fce60b512e98d2b0a9e76cfe8 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 23:28:51 +0200 Subject: [PATCH 17/20] Changed signature to allow ArrayAccess|array argument --- src/Service/HttpDefaultRenderingStrategyFactory.php | 5 +++-- src/Service/HttpExceptionStrategyFactory.php | 9 +++++---- src/Service/HttpRouteNotFoundStrategyFactory.php | 13 +++++++------ src/Service/HttpViewManagerConfigTrait.php | 8 ++------ 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/Service/HttpDefaultRenderingStrategyFactory.php b/src/Service/HttpDefaultRenderingStrategyFactory.php index 21a47daae..d580202ab 100644 --- a/src/Service/HttpDefaultRenderingStrategyFactory.php +++ b/src/Service/HttpDefaultRenderingStrategyFactory.php @@ -7,6 +7,7 @@ namespace Zend\Mvc\Service; +use ArrayAccess; use Interop\Container\ContainerInterface; use Zend\Mvc\View\Http\DefaultRenderingStrategy; use Zend\ServiceManager\Factory\FactoryInterface; @@ -38,9 +39,9 @@ public function __invoke(ContainerInterface $container, $name, array $options = * Uses layout template from configuration; if none available, defaults to "layout/layout". * * @param DefaultRenderingStrategy $strategy - * @param array $config + * @param array|ArrayAccess $config */ - private function injectLayoutTemplate(DefaultRenderingStrategy $strategy, array $config) + private function injectLayoutTemplate(DefaultRenderingStrategy $strategy, $config) { $layout = isset($config['layout']) ? $config['layout'] : 'layout/layout'; $strategy->setLayoutTemplate($layout); diff --git a/src/Service/HttpExceptionStrategyFactory.php b/src/Service/HttpExceptionStrategyFactory.php index 6798f5a0a..5dbaa53a2 100644 --- a/src/Service/HttpExceptionStrategyFactory.php +++ b/src/Service/HttpExceptionStrategyFactory.php @@ -7,6 +7,7 @@ namespace Zend\Mvc\Service; +use ArrayAccess; use Interop\Container\ContainerInterface; use Zend\Mvc\View\Http\ExceptionStrategy; use Zend\ServiceManager\Factory\FactoryInterface; @@ -36,9 +37,9 @@ public function __invoke(ContainerInterface $container, $name, array $options = * Inject strategy with configured display_exceptions flag. * * @param ExceptionStrategy $strategy - * @param array $config + * @param array|ArrayAccess $config */ - private function injectDisplayExceptions(ExceptionStrategy $strategy, array $config) + private function injectDisplayExceptions(ExceptionStrategy $strategy, $config) { $flag = isset($config['display_exceptions']) ? $config['display_exceptions'] : false; $strategy->setDisplayExceptions($flag); @@ -48,9 +49,9 @@ private function injectDisplayExceptions(ExceptionStrategy $strategy, array $con * Inject strategy with configured exception_template * * @param ExceptionStrategy $strategy - * @param array $config + * @param array|ArrayAccess $config */ - private function injectExceptionTemplate(ExceptionStrategy $strategy, array $config) + private function injectExceptionTemplate(ExceptionStrategy $strategy, $config) { $template = isset($config['exception_template']) ? $config['exception_template'] : 'error'; $strategy->setExceptionTemplate($template); diff --git a/src/Service/HttpRouteNotFoundStrategyFactory.php b/src/Service/HttpRouteNotFoundStrategyFactory.php index a426d1aea..6a75da5b6 100644 --- a/src/Service/HttpRouteNotFoundStrategyFactory.php +++ b/src/Service/HttpRouteNotFoundStrategyFactory.php @@ -7,6 +7,7 @@ namespace Zend\Mvc\Service; +use ArrayAccess; use Interop\Container\ContainerInterface; use Zend\Mvc\View\Http\RouteNotFoundStrategy; use Zend\ServiceManager\Factory\FactoryInterface; @@ -37,9 +38,9 @@ public function __invoke(ContainerInterface $container, $name, array $options = * Inject strategy with configured display_exceptions flag. * * @param RouteNotFoundStrategy $strategy - * @param array $config + * @param array|ArrayAccess $config */ - private function injectDisplayExceptions(RouteNotFoundStrategy $strategy, array $config) + private function injectDisplayExceptions(RouteNotFoundStrategy $strategy, $config) { $flag = isset($config['display_exceptions']) ? $config['display_exceptions'] : false; $strategy->setDisplayExceptions($flag); @@ -49,9 +50,9 @@ private function injectDisplayExceptions(RouteNotFoundStrategy $strategy, array * Inject strategy with configured display_not_found_reason flag. * * @param RouteNotFoundStrategy $strategy - * @param array $config + * @param array|ArrayAccess $config */ - private function injectDisplayNotFoundReason(RouteNotFoundStrategy $strategy, array $config) + private function injectDisplayNotFoundReason(RouteNotFoundStrategy $strategy, $config) { $flag = isset($config['display_not_found_reason']) ? $config['display_not_found_reason'] : false; $strategy->setDisplayNotFoundReason($flag); @@ -61,9 +62,9 @@ private function injectDisplayNotFoundReason(RouteNotFoundStrategy $strategy, ar * Inject strategy with configured not_found_template. * * @param RouteNotFoundStrategy $strategy - * @param array $config + * @param array|ArrayAccess $config */ - private function injectNotFoundTemplate(RouteNotFoundStrategy $strategy, array $config) + private function injectNotFoundTemplate(RouteNotFoundStrategy $strategy, $config) { $template = isset($config['not_found_template']) ? $config['not_found_template'] : '404'; $strategy->setNotFoundTemplate($template); diff --git a/src/Service/HttpViewManagerConfigTrait.php b/src/Service/HttpViewManagerConfigTrait.php index d5952983b..3cc2fa58a 100644 --- a/src/Service/HttpViewManagerConfigTrait.php +++ b/src/Service/HttpViewManagerConfigTrait.php @@ -16,7 +16,7 @@ trait HttpViewManagerConfigTrait * Retrieve view_manager configuration, if present. * * @param ContainerInterface $container - * @return array + * @return array|ArrayAccess */ private function getConfig(ContainerInterface $container) { @@ -26,11 +26,7 @@ private function getConfig(ContainerInterface $container) return []; } - if ($config['view_manager'] instanceof ArrayAccess) { - return (array) $config['view_manager']; - } - - if (\is_array($config['view_manager'])) { + if (\is_array($config['view_manager']) || $config['view_manager'] instanceof ArrayAccess) { return $config['view_manager']; } From 404bad3ff814f2ab1c30ac39e57debe8694421d3 Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 23:44:27 +0200 Subject: [PATCH 18/20] Replaced ::class notation with strings in order to reduce dependencies --- .../LazyControllerAbstractFactory.php | 20 +++++++++---------- src/Service/PaginatorPluginManagerFactory.php | 4 +--- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/Controller/LazyControllerAbstractFactory.php b/src/Controller/LazyControllerAbstractFactory.php index 4727af1a6..12e22495e 100644 --- a/src/Controller/LazyControllerAbstractFactory.php +++ b/src/Controller/LazyControllerAbstractFactory.php @@ -83,16 +83,16 @@ class LazyControllerAbstractFactory implements AbstractFactoryInterface * @var string[] */ protected $aliases = [ - ConsoleAdapterInterface::class => 'ConsoleAdapter', - FilterPluginManager::class => 'FilterManager', - HydratorPluginManager::class => 'HydratorManager', - InputFilterPluginManager::class => 'InputFilterManager', - LogFilterManager::class => 'LogFilterManager', - LogFormatterManager::class => 'LogFormatterManager', - LogProcessorManager::class => 'LogProcessorManager', - LogWriterManager::class => 'LogWriterManager', - SerializerAdapterManager::class => 'SerializerAdapterManager', - ValidatorPluginManager::class => 'ValidatorManager', + 'Zend\Console\Adapter\AdapterInterface' => 'ConsoleAdapter', + 'Zend\Filter\FilterPluginManager' => 'FilterManager', + 'Zend\Hydrator\HydratorPluginManager' => 'HydratorManager', + 'Zend\InputFilter\InputFilterPluginManager' => 'InputFilterManager', + 'Zend\Log\FilterPluginManager' => 'LogFilterManager', + 'Zend\Log\FormatterPluginManager' => 'LogFormatterManager', + 'Zend\Log\ProcessorPluginManager' => 'LogProcessorManager', + 'Zend\Log\WriterPluginManager' => 'LogWriterManager', + 'Zend\Serializer\AdapterPluginManager' => 'SerializerAdapterManager', + 'Zend\Validator\ValidatorPluginManager' => 'ValidatorManager', ]; /** diff --git a/src/Service/PaginatorPluginManagerFactory.php b/src/Service/PaginatorPluginManagerFactory.php index eac7de893..7c469c01c 100644 --- a/src/Service/PaginatorPluginManagerFactory.php +++ b/src/Service/PaginatorPluginManagerFactory.php @@ -7,9 +7,7 @@ namespace Zend\Mvc\Service; -use Zend\Paginator\AdapterPluginManager as PaginatorPluginManager; - class PaginatorPluginManagerFactory extends AbstractPluginManagerFactory { - const PLUGIN_MANAGER_CLASS = PaginatorPluginManager::class; + const PLUGIN_MANAGER_CLASS = 'Zend\Paginator\AdapterPluginManager'; } From 3845b730a4bb4056669f6e8f2f44531fe121c3da Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Mon, 15 Oct 2018 23:55:15 +0200 Subject: [PATCH 19/20] Removed useless dependencies --- composer.json | 9 +- composer.lock | 588 +------------------------------------------------- 2 files changed, 2 insertions(+), 595 deletions(-) diff --git a/composer.json b/composer.json index 56ad8a19d..44ef632fb 100644 --- a/composer.json +++ b/composer.json @@ -7,7 +7,7 @@ "zendframework", "mvc" ], - "version": "3.1.2", + "version": "3.2-dev", "support": { "docs": "https://docs.zendframework.com/zend-mvc/", "issues": "https://github.com/zendframework/zend-mvc/issues", @@ -31,15 +31,8 @@ "http-interop/http-middleware": "^0.4.1", "phpunit/phpunit": "^6.4.4 || ^5.7.14", "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-filter": "^2.6", - "zendframework/zend-hydrator": "^2.2.1", - "zendframework/zend-inputfilter": "^2.6", "zendframework/zend-json": "^2.6.1 || ^3.0", - "zendframework/zend-log": "^2.6", - "zendframework/zend-mvc-console": "^1.1.11", - "zendframework/zend-paginator": "^2.0.0", "zendframework/zend-psr7bridge": "^1.0", - "zendframework/zend-serializer": "^2.6", "zendframework/zend-stratigility": "^2.0.1" }, "suggest": { diff --git a/composer.lock b/composer.lock index b95461a99..0183416bd 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4b4e9cfcf733bcd056bf14c8b44d0498", + "content-hash": "b14c28913c90f5f00cd5276a57bf6729", "packages": [ { "name": "container-interop/container-interop", @@ -1589,53 +1589,6 @@ ], "time": "2016-08-06T14:39:51+00:00" }, - { - "name": "psr/log", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10T12:19:37+00:00" - }, { "name": "sebastian/code-unit-reverse-lookup", "version": "1.0.1", @@ -2516,59 +2469,6 @@ ], "time": "2016-11-09T21:30:43+00:00" }, - { - "name": "zendframework/zend-console", - "version": "2.7.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-console.git", - "reference": "e8aa08da83de3d265256c40ba45cd649115f0e18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-console/zipball/e8aa08da83de3d265256c40ba45cd649115f0e18", - "reference": "e8aa08da83de3d265256c40ba45cd649115f0e18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "zendframework/zend-stdlib": "^2.7.7 || ^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-filter": "^2.7.2", - "zendframework/zend-json": "^2.6 || ^3.0", - "zendframework/zend-validator": "^2.10.1" - }, - "suggest": { - "zendframework/zend-filter": "To support DefaultRouteMatcher usage", - "zendframework/zend-validator": "To support DefaultRouteMatcher usage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7.x-dev", - "dev-develop": "2.8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Console\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Build console applications using getopt syntax or routing, complete with prompts", - "keywords": [ - "ZendFramework", - "console", - "zf" - ], - "time": "2018-01-25T19:08:04+00:00" - }, { "name": "zendframework/zend-diactoros", "version": "1.8.6", @@ -2633,185 +2533,6 @@ ], "time": "2018-09-05T19:29:37+00:00" }, - { - "name": "zendframework/zend-filter", - "version": "2.8.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-filter.git", - "reference": "7b997dbe79459f1652deccc8786d7407fb66caa9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/7b997dbe79459f1652deccc8786d7407fb66caa9", - "reference": "7b997dbe79459f1652deccc8786d7407fb66caa9", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "zendframework/zend-stdlib": "^2.7.7 || ^3.1" - }, - "conflict": { - "zendframework/zend-validator": "<2.10.1" - }, - "require-dev": { - "pear/archive_tar": "^1.4.3", - "phpunit/phpunit": "^5.7.23 || ^6.4.3", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-crypt": "^3.2.1", - "zendframework/zend-servicemanager": "^2.7.8 || ^3.3", - "zendframework/zend-uri": "^2.6" - }, - "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.8.x-dev", - "dev-develop": "2.9.x-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", - "keywords": [ - "ZendFramework", - "filter", - "zf" - ], - "time": "2018-04-11T16:20:04+00:00" - }, - { - "name": "zendframework/zend-hydrator", - "version": "2.4.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-hydrator.git", - "reference": "bd48bc3bc046df007a94125f868dd1aa1b73a813" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-hydrator/zipball/bd48bc3bc046df007a94125f868dd1aa1b73a813", - "reference": "bd48bc3bc046df007a94125f868dd1aa1b73a813", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "zendframework/zend-stdlib": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-eventmanager": "^2.6.2 || ^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.x-dev", - "dev-release-1.1": "1.1.x-dev", - "dev-master": "2.4.x-dev", - "dev-develop": "2.5.x-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" - ], - "description": "Serialize objects to arrays, and vice versa", - "keywords": [ - "ZendFramework", - "hydrator", - "zf" - ], - "time": "2018-04-30T21:22:14+00:00" - }, - { - "name": "zendframework/zend-inputfilter", - "version": "2.8.2", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-inputfilter.git", - "reference": "3f02179e014d9ef0faccda2ad6c65d38adc338d8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-inputfilter/zipball/3f02179e014d9ef0faccda2ad6c65d38adc338d8", - "reference": "3f02179e014d9ef0faccda2ad6c65d38adc338d8", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "zendframework/zend-filter": "^2.6", - "zendframework/zend-servicemanager": "^2.7.10 || ^3.3.1", - "zendframework/zend-stdlib": "^2.7 || ^3.0", - "zendframework/zend-validator": "^2.10.1" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3", - "zendframework/zend-coding-standard": "~1.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8.x-dev", - "dev-develop": "2.9.x-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" - ], - "description": "Normalize and validate input sets from the web, APIs, the CLI, and more, including files", - "keywords": [ - "ZendFramework", - "inputfilter", - "zf" - ], - "time": "2018-05-14T17:38:03+00:00" - }, { "name": "zendframework/zend-json", "version": "3.1.0", @@ -2862,208 +2583,6 @@ ], "time": "2018-01-04T17:51:34+00:00" }, - { - "name": "zendframework/zend-log", - "version": "2.10.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-log.git", - "reference": "9cec3b092acb39963659c2f32441cccc56b3f430" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-log/zipball/9cec3b092acb39963659c2f32441cccc56b3f430", - "reference": "9cec3b092acb39963659c2f32441cccc56b3f430", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "psr/log": "^1.0", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^5.7.15 || ^6.0.8", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-db": "^2.6", - "zendframework/zend-escaper": "^2.5", - "zendframework/zend-filter": "^2.5", - "zendframework/zend-mail": "^2.6.1", - "zendframework/zend-validator": "^2.10.1" - }, - "suggest": { - "ext-mongo": "mongo extension to use Mongo writer", - "ext-mongodb": "mongodb extension to use MongoDB writer", - "zendframework/zend-console": "Zend\\Console component to use the RequestID log processor", - "zendframework/zend-db": "Zend\\Db component to use the database log writer", - "zendframework/zend-escaper": "Zend\\Escaper component, for use in the XML log formatter", - "zendframework/zend-mail": "Zend\\Mail component to use the email log writer", - "zendframework/zend-validator": "Zend\\Validator component to block invalid log messages" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.10.x-dev", - "dev-develop": "2.11.x-dev" - }, - "zf": { - "component": "Zend\\Log", - "config-provider": "Zend\\Log\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Zend\\Log\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "component for general purpose logging", - "homepage": "https://github.com/zendframework/zend-log", - "keywords": [ - "log", - "logging", - "zf2" - ], - "time": "2018-04-09T21:59:51+00:00" - }, - { - "name": "zendframework/zend-mvc-console", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-mvc-console.git", - "reference": "821c18e0d57e71b370166bd2f35623befddaf2ee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-mvc-console/zipball/821c18e0d57e71b370166bd2f35623befddaf2ee", - "reference": "821c18e0d57e71b370166bd2f35623befddaf2ee", - "shasum": "" - }, - "require": { - "container-interop/container-interop": "^1.1", - "php": "^5.6 || ^7.0", - "zendframework/zend-console": "^2.6", - "zendframework/zend-eventmanager": "^2.6.2 || ^3.0", - "zendframework/zend-modulemanager": "^2.7.1", - "zendframework/zend-mvc": "^3.0.3", - "zendframework/zend-router": "^3.0", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-stdlib": "^2.7.5 || ^3.0", - "zendframework/zend-text": "^2.6", - "zendframework/zend-view": "^2.6.3" - }, - "conflict": { - "zendframework/zend-mvc": "<3.0.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-filter": "^2.6.1" - }, - "suggest": { - "zendframework/zend-filter": "^2.6.1, to filter rendered results" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev", - "dev-develop": "1.3.x-dev" - }, - "zf": { - "component": "Zend\\Mvc\\Console" - } - }, - "autoload": { - "psr-4": { - "Zend\\Mvc\\Console\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Integration between zend-mvc and zend-console", - "keywords": [ - "ZendFramework", - "console", - "mvc", - "zf" - ], - "time": "2018-04-30T19:10:26+00:00" - }, - { - "name": "zendframework/zend-paginator", - "version": "2.8.1", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-paginator.git", - "reference": "fd58828c8280a90f133b9e0af2fe1a7885d47206" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-paginator/zipball/fd58828c8280a90f133b9e0af2fe1a7885d47206", - "reference": "fd58828c8280a90f133b9e0af2fe1a7885d47206", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^5.6", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.1 || ^5.7.15", - "zendframework/zend-cache": "^2.6.1", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-config": "^2.6.0", - "zendframework/zend-db": "^2.9.2", - "zendframework/zend-filter": "^2.6.1", - "zendframework/zend-json": "^2.6.1", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-view": "^2.6.3" - }, - "suggest": { - "zendframework/zend-cache": "Zend\\Cache component to support cache features", - "zendframework/zend-db": "Zend\\Db component", - "zendframework/zend-filter": "Zend\\Filter component", - "zendframework/zend-json": "Zend\\Json component", - "zendframework/zend-servicemanager": "Zend\\ServiceManager component", - "zendframework/zend-view": "Zend\\View component" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.8-dev", - "dev-develop": "2.9-dev" - }, - "zf": { - "component": "Zend\\Paginator", - "config-provider": "Zend\\Paginator\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Zend\\Paginator\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "zend-paginator is a flexible component for paginating collections of data and presenting that data to users.", - "homepage": "https://github.com/zendframework/zend-paginator", - "keywords": [ - "paginator", - "zf2" - ], - "time": "2018-01-30T15:52:44+00:00" - }, { "name": "zendframework/zend-psr7bridge", "version": "1.1.0", @@ -3115,63 +2634,6 @@ ], "time": "2018-09-27T21:12:00+00:00" }, - { - "name": "zendframework/zend-serializer", - "version": "2.9.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-serializer.git", - "reference": "0172690db48d8935edaf625c4cba38b79719892c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/0172690db48d8935edaf625c4cba38b79719892c", - "reference": "0172690db48d8935edaf625c4cba38b79719892c", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "zendframework/zend-json": "^2.5 || ^3.0", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.25 || ^6.4.4", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-math": "^2.6 || ^3.0", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3" - }, - "suggest": { - "zendframework/zend-math": "(^2.6 || ^3.0) To support Python Pickle serialization", - "zendframework/zend-servicemanager": "(^2.7.5 || ^3.0.3) To support plugin manager support" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.9.x-dev", - "dev-develop": "2.10.x-dev" - }, - "zf": { - "component": "Zend\\Serializer", - "config-provider": "Zend\\Serializer\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Zend\\Serializer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover", - "keywords": [ - "ZendFramework", - "serializer", - "zf" - ], - "time": "2018-05-14T18:45:18+00:00" - }, { "name": "zendframework/zend-stratigility", "version": "2.2.2", @@ -3232,54 +2694,6 @@ "zf" ], "time": "2018-04-16T18:22:03+00:00" - }, - { - "name": "zendframework/zend-text", - "version": "2.7.0", - "source": { - "type": "git", - "url": "https://github.com/zendframework/zend-text.git", - "reference": "ca987dd4594f5f9508771fccd82c89bc7fbb39ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-text/zipball/ca987dd4594f5f9508771fccd82c89bc7fbb39ac", - "reference": "ca987dd4594f5f9508771fccd82c89bc7fbb39ac", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0", - "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", - "zendframework/zend-stdlib": "^2.7 || ^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4", - "zendframework/zend-coding-standard": "~1.0.0", - "zendframework/zend-config": "^2.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7.x-dev", - "dev-develop": "2.8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Zend\\Text\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Create FIGlets and text-based tables", - "keywords": [ - "ZendFramework", - "text", - "zf" - ], - "time": "2018-04-30T14:55:10+00:00" } ], "aliases": [], From 5f40f549c5a0273bfff8157e37e7473c2e05c5df Mon Sep 17 00:00:00 2001 From: Thomas Vargiu Date: Tue, 16 Oct 2018 00:17:00 +0200 Subject: [PATCH 20/20] Replaced PHPUnit TestCase class --- test/Exception/InvalidArgumentExceptionTest.php | 3 ++- test/Exception/UnexpectedValueExceptionTest.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/test/Exception/InvalidArgumentExceptionTest.php b/test/Exception/InvalidArgumentExceptionTest.php index 2cc1bc63c..185ddef08 100644 --- a/test/Exception/InvalidArgumentExceptionTest.php +++ b/test/Exception/InvalidArgumentExceptionTest.php @@ -4,8 +4,9 @@ use ArrayObject; use Zend\Mvc\Exception\InvalidArgumentException; +use PHPUnit\Framework\TestCase; -class InvalidArgumentExceptionTest extends \PHPUnit_Framework_TestCase +class InvalidArgumentExceptionTest extends TestCase { public function testUnexpectedTypeWithObjectType() { diff --git a/test/Exception/UnexpectedValueExceptionTest.php b/test/Exception/UnexpectedValueExceptionTest.php index e553666ab..e5aa4ceb3 100644 --- a/test/Exception/UnexpectedValueExceptionTest.php +++ b/test/Exception/UnexpectedValueExceptionTest.php @@ -4,8 +4,9 @@ use ArrayObject; use Zend\Mvc\Exception\UnexpectedValueException; +use PHPUnit\Framework\TestCase; -class UnexpectedValueExceptionTest extends \PHPUnit_Framework_TestCase +class UnexpectedValueExceptionTest extends TestCase { public function testUnexpectedTypeWithObjectType() {