Skip to content

Commit

Permalink
Add RoutesInspector
Browse files Browse the repository at this point in the history
  • Loading branch information
vitorbrandao committed May 16, 2016
1 parent 017b805 commit dacaa09
Show file tree
Hide file tree
Showing 5 changed files with 127 additions and 13 deletions.
16 changes: 16 additions & 0 deletions src/Controller/Http/RoutesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,27 @@

use Noiselabs\ZfDebugModule\Module;
use Noiselabs\ZfDebugModule\Package;
use Noiselabs\ZfDebugModule\Util\RoutesInspector;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class RoutesController extends AbstractActionController
{
/**
* @var RoutesInspector
*/
private $routesInspector;

/**
* RoutesController constructor.
*
* @param RoutesInspector $routesInspector
*/
public function __construct(RoutesInspector $routesInspector)
{
$this->routesInspector = $routesInspector;
}

/**
* @return ViewModel
*/
Expand Down
8 changes: 7 additions & 1 deletion src/Factory/Controller/Http/RoutesControllerFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
namespace Noiselabs\ZfDebugModule\Factory\Controller\Http;

use Noiselabs\ZfDebugModule\Controller\Http\RoutesController;
use Noiselabs\ZfDebugModule\Factory\Util\RoutesInspectorFactory;
use Zend\Mvc\Controller\ControllerManager;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

Expand All @@ -24,6 +26,10 @@ class RoutesControllerFactory implements FactoryInterface
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
return new RoutesController();
/* @var ControllerManager $serviceLocator */
$mainServiceLocator = $serviceLocator->getServiceLocator();
$routesInspector = $mainServiceLocator->get(RoutesInspectorFactory::SERVICE_NAME);

return new RoutesController($routesInspector);
}
}
34 changes: 34 additions & 0 deletions src/Factory/Util/RoutesInspectorFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php
/**
* ZfDebugModule. Console commands and other utilities for debugging ZF2 apps.
*
* @license http://www.opensource.org/licenses/mit-license.html MIT License
* @copyright 2016 Vítor Brandão <vitor@noiselabs.org>
*/

namespace Noiselabs\ZfDebugModule\Factory\Util;

use Noiselabs\ZfDebugModule\Util\RoutesInspector;
use Zend\Mvc\Router\RouteInterface;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class RoutesInspectorFactory implements FactoryInterface
{
const SERVICE_NAME = RoutesInspector::class;

/**
* {@inheritdoc}
*/
public function createService(ServiceLocatorInterface $serviceLocator)
{
/** @var array $config */
$config = $serviceLocator->get('config');
$config = isset($config['router']['routes']) ? $config['router']['routes'] : [];

/** @var RouteInterface $router */
$router = $serviceLocator->get('router');

return new RoutesInspector($router, $config);
}
}
30 changes: 18 additions & 12 deletions src/Resources/config/module.config.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,22 @@
use Noiselabs\ZfDebugModule\Factory\Controller\Console\RoutesControllerFactory as ConsoleRoutesControllerFactory;
use Noiselabs\ZfDebugModule\Factory\Controller\Http\IndexControllerFactory;
use Noiselabs\ZfDebugModule\Factory\Controller\Http\RoutesControllerFactory as HttpRoutesControllerFactory;
use Noiselabs\ZfDebugModule\Factory\Util\RoutesInspectorFactory;
use Noiselabs\ZfDebugModule\Package;

return [
'asset_manager' => [
'resolver_configs' => [
'map' => [
'zf-debug-utils/favicon.ico' => __DIR__ . '/../public/favicon.ico',
'zf-debug-utils/css/bootstrap.min.css' => __DIR__ . '/../public/css/bootstrap.min.css',
'zf-debug-utils/css/bootstrap-theme.min.css' => __DIR__ . '/../public/css/bootstrap-theme.min.css',
'zf-debug-utils/css/style.css' => __DIR__ . '/../public/css/style.css',
'zf-debug-utils/js/bootstrap.min.js' => __DIR__ . '/../public/js/bootstrap.min.js',
'zf-debug-utils/js/jquery.min.js' => __DIR__ . '/../public/js/jquery.min.js',
],
],
],
'controllers' => [
'factories' => [
ConsoleRoutesControllerFactory::SERVICE_NAME => ConsoleRoutesControllerFactory::class,
Expand Down Expand Up @@ -61,23 +74,16 @@
],
],
],
'service_manager' => [
'factories' => [
RoutesInspectorFactory::SERVICE_NAME => RoutesInspectorFactory::class,
],
],
'view_manager' => [
'template_map' => [
Package::FQPN . '/index/index' => __DIR__ . '/../views/index/index.phtml',
Package::FQPN . '/layout' => __DIR__ . '/../views/layout/layout.phtml',
Package::FQPN . '/routes/list-all' => __DIR__ . '/../views/routes/list-all.phtml',
],
],
'asset_manager' => [
'resolver_configs' => [
'map' => [
'zf-debug-utils/favicon.ico' => __DIR__ . '/../public/favicon.ico',
'zf-debug-utils/css/bootstrap.min.css' => __DIR__ . '/../public/css/bootstrap.min.css',
'zf-debug-utils/css/bootstrap-theme.min.css' => __DIR__ . '/../public/css/bootstrap-theme.min.css',
'zf-debug-utils/css/style.css' => __DIR__ . '/../public/css/style.css',
'zf-debug-utils/js/bootstrap.min.js' => __DIR__ . '/../public/js/bootstrap.min.js',
'zf-debug-utils/js/jquery.min.js' => __DIR__ . '/../public/js/jquery.min.js',
],
],
],
];
52 changes: 52 additions & 0 deletions src/Util/RoutesInspector.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php
/**
* ZfDebugModule. Console commands and other utilities for debugging ZF2 apps.
*
* @license http://www.opensource.org/licenses/mit-license.html MIT License
* @copyright 2016 Vítor Brandão <vitor@noiselabs.org>
*/

namespace Noiselabs\ZfDebugModule\Util;

use Zend\Mvc\Router\RouteInterface;
use Zend\Mvc\Router\SimpleRouteStack;

class RoutesInspector
{
/**
* @var array
*/
private $config;

/**
* @var RouteInterface
*/
private $router;

/**
* RoutesInspector constructor.
*
* @param RouteInterface $router
* @param array $config
*/
public function __construct(RouteInterface $router, array $config)
{
$this->router = $router;
$this->config = $config;
}

/**
* @return array|\Traversable
*/
public function getRoutes()
{
if ($this->router instanceof SimpleRouteStack) {
/** @var SimpleRouteStack $router */
$router = $this->router;

return $router->getRoutes();
}

return [];
}
}

0 comments on commit dacaa09

Please sign in to comment.