[ticket/11497] Remove 'ext.finder' from services' list

PHPBB3-11497
This commit is contained in:
Nicofuma 2014-05-02 23:03:03 +02:00
parent 3b823465db
commit dc6e2be884
8 changed files with 62 additions and 59 deletions

View file

@ -95,6 +95,7 @@ services:
- @user
- @config
- @controller.provider
- @ext.manager
- %core.root_path%
- %core.php_ext%
@ -107,8 +108,6 @@ services:
controller.provider:
class: phpbb\controller\provider
arguments:
- @ext.finder
calls:
- [find, [%core.root_path%]]
@ -175,16 +174,6 @@ services:
- %core.php_ext%
- @cache.driver
ext.finder:
class: phpbb\extension\finder
arguments:
- @ext.manager
- @filesystem
- %core.root_path%
- @cache.driver
- %core.php_ext%
- _ext_finder
filesystem:
class: phpbb\filesystem
@ -217,7 +206,7 @@ services:
kernel_request_subscriber:
class: phpbb\event\kernel_request_subscriber
arguments:
- @ext.finder
- @ext.manager
- %core.root_path%
- %core.php_ext%
tags:

View file

@ -22,22 +22,22 @@ if (!defined('IN_PHPBB'))
/**
* Create a new UrlMatcher class and dump it into the cache file
*
* @param \phpbb\extension\finder $finder Extension finder
* @param \phpbb\extension\manager $manager Extension manager
* @param RequestContext $context Symfony RequestContext object
* @param string $root_path Root path
* @param string $php_ext PHP extension
* @return null
*/
function phpbb_get_url_matcher(\phpbb\extension\finder $finder, RequestContext $context, $root_path, $php_ext)
function phpbb_get_url_matcher(\phpbb\extension\manager $manager, RequestContext $context, $root_path, $php_ext)
{
if (defined('DEBUG'))
{
return phpbb_create_url_matcher($finder, $context, $root_path);
return phpbb_create_url_matcher($manager, $context, $root_path);
}
if (!phpbb_url_matcher_dumped($root_path, $php_ext))
{
phpbb_create_dumped_url_matcher($finder, $root_path, $php_ext);
phpbb_create_dumped_url_matcher($manager, $root_path, $php_ext);
}
return phpbb_load_url_matcher($context, $root_path, $php_ext);
@ -46,14 +46,15 @@ function phpbb_get_url_matcher(\phpbb\extension\finder $finder, RequestContext $
/**
* Create a new UrlMatcher class and dump it into the cache file
*
* @param \phpbb\extension\finder $finder Extension finder
* @param \phpbb\extension\manager $manager Extension manager
* @param string $root_path Root path
* @param string $php_ext PHP extension
* @return null
*/
function phpbb_create_dumped_url_matcher(\phpbb\extension\finder $finder, $root_path, $php_ext)
function phpbb_create_dumped_url_matcher(\phpbb\extension\manager $manager, $root_path, $php_ext)
{
$provider = new \phpbb\controller\provider($finder);
$provider = new \phpbb\controller\provider();
$provider->set_ext_finder($manager->get_finder());
$routes = $provider->find($root_path)->get_routes();
$dumper = new PhpMatcherDumper($routes);
$cached_url_matcher_dump = $dumper->dump(array(
@ -66,13 +67,14 @@ function phpbb_create_dumped_url_matcher(\phpbb\extension\finder $finder, $root_
/**
* Create a non-cached UrlMatcher
*
* @param \phpbb\extension\finder $finder Extension finder
* @param \phpbb\extension\manager $manager Extension manager
* @param RequestContext $context Symfony RequestContext object
* @return UrlMatcher
*/
function phpbb_create_url_matcher(\phpbb\extension\finder $finder, RequestContext $context, $root_path)
function phpbb_create_url_matcher(\phpbb\extension\manager $manager, RequestContext $context, $root_path)
{
$provider = new \phpbb\controller\provider($finder);
$provider = new \phpbb\controller\provider();
$provider->set_ext_finder($manager->get_finder());
$routes = $provider->find($root_path)->get_routes();
return new UrlMatcher($routes, $context);
}

View file

@ -56,16 +56,18 @@ class helper
* @param \phpbb\user $user User object
* @param \phpbb\config\config $config Config object
* @param \phpbb\controller\provider $provider Path provider
* @param \phpbb\extension\manager $manager Extension manager object
* @param string $phpbb_root_path phpBB root path
* @param string $php_ext PHP extension
*/
public function __construct(\phpbb\template\template $template, \phpbb\user $user, \phpbb\config\config $config, \phpbb\controller\provider $provider, $phpbb_root_path, $php_ext)
public function __construct(\phpbb\template\template $template, \phpbb\user $user, \phpbb\config\config $config, \phpbb\controller\provider $provider, \phpbb\extension\manager $manager, $phpbb_root_path, $php_ext)
{
$this->template = $template;
$this->user = $user;
$this->config = $config;
$this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $php_ext;
$provider->set_ext_finder($manager->get_finder());
$this->route_collection = $provider->get_routes();
}

View file

@ -37,21 +37,25 @@ class provider
* @param array() $routing_files Array of strings containing paths
* to YAML files holding route information
*/
public function __construct(\phpbb\extension\finder $finder = null, $routing_files = array())
public function __construct($routing_files = array())
{
$this->routing_files = $routing_files;
}
if ($finder)
/**
* @param \phpbb\extension\finder $finder
* @return null
*/
public function set_ext_finder(\phpbb\extension\finder $finder)
{
// We hardcode the path to the core config directory
// because the finder cannot find it
$this->routing_files = array_merge($this->routing_files, array('config/routing.yml'), array_keys($finder
->directory('/config')
->directory('config')
->suffix('routing.yml')
->find()
));
}
}
/**
* Find a list of controllers and return it

View file

@ -18,10 +18,10 @@ use Symfony\Component\Routing\RequestContext;
class kernel_request_subscriber implements EventSubscriberInterface
{
/**
* Extension finder object
* @var \phpbb\extension\finder
* Extension manager object
* @var \phpbb\extension\manager
*/
protected $finder;
protected $manager;
/**
* PHP extension
@ -38,15 +38,15 @@ class kernel_request_subscriber implements EventSubscriberInterface
/**
* Construct method
*
* @param \phpbb\extension\finder $finder Extension finder object
* @param \phpbb\extension\manager $manager Extension manager object
* @param string $root_path Root path
* @param string $php_ext PHP extension
*/
public function __construct(\phpbb\extension\finder $finder, $root_path, $php_ext)
public function __construct(\phpbb\extension\manager $manager, $root_path, $php_ext)
{
$this->finder = $finder;
$this->root_path = $root_path;
$this->php_ext = $php_ext;
$this->manager = $manager;
}
/**
@ -55,6 +55,7 @@ class kernel_request_subscriber implements EventSubscriberInterface
* This is responsible for setting up the routing information
*
* @param GetResponseEvent $event
* @throws \BadMethodCallException
* @return null
*/
public function on_kernel_request(GetResponseEvent $event)
@ -63,7 +64,7 @@ class kernel_request_subscriber implements EventSubscriberInterface
$context = new RequestContext();
$context->fromRequest($request);
$matcher = phpbb_get_url_matcher($this->finder, $context, $this->root_path, $this->php_ext);
$matcher = phpbb_get_url_matcher($this->manager, $context, $this->root_path, $this->php_ext);
$router_listener = new RouterListener($matcher, $context);
$router_listener->onKernelRequest($event);
}

View file

@ -29,7 +29,8 @@ class phpbb_controller_controller_test extends phpbb_test_case
public function test_provider()
{
$provider = new \phpbb\controller\provider($this->extension_manager->get_finder());
$provider = new \phpbb\controller\provider();
$provider->set_ext_finder($this->extension_manager->get_finder());
$routes = $provider->find(__DIR__)->get_routes();
// This will need to be updated if any new routes are defined

View file

@ -27,9 +27,7 @@ class phpbb_controller_helper_route_test extends phpbb_test_case
);
$this->config = new \phpbb\config\config(array('enable_mod_rewrite' => '0'));
$this->template = new phpbb\template\twig\twig($phpbb_path_helper, $this->config, $this->user, new \phpbb\template\context());
$finder = new \phpbb\extension\finder(
new phpbb_mock_extension_manager(
$this->extension_manager = new phpbb_mock_extension_manager(
dirname(__FILE__) . '/',
array(
'vendor2/foo' => array(
@ -38,12 +36,16 @@ class phpbb_controller_helper_route_test extends phpbb_test_case
'ext_path' => 'ext/vendor2/foo/',
),
)
),
);
$finder = new \phpbb\extension\finder(
$this->extension_manager,
new \phpbb\filesystem(),
dirname(__FILE__) . '/',
new phpbb_mock_cache()
);
$this->provider = new \phpbb\controller\provider($finder);
$this->provider = new \phpbb\controller\provider();
$this->provider->set_ext_finder($finder);
$this->provider->find(dirname(__FILE__) . '/');
}
@ -82,7 +84,7 @@ class phpbb_controller_helper_route_test extends phpbb_test_case
*/
public function test_helper_url_no_rewrite($route, $params, $is_amp, $session_id, $expected, $description)
{
$this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $this->provider, '', 'php');
$this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $this->provider, $this->extension_manager,'', 'php');
$this->assertEquals($expected, $this->helper->route($route, $params, $is_amp, $session_id));
}
@ -122,7 +124,7 @@ class phpbb_controller_helper_route_test extends phpbb_test_case
public function test_helper_url_with_rewrite($route, $params, $is_amp, $session_id, $expected, $description)
{
$this->config = new \phpbb\config\config(array('enable_mod_rewrite' => '1'));
$this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $this->provider, '', 'php');
$this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $this->provider, $this->extension_manager,'', 'php');
$this->assertEquals($expected, $this->helper->route($route, $params, $is_amp, $session_id));
}
}

View file

@ -30,17 +30,19 @@ class phpbb_pagination_pagination_test extends phpbb_template_template_test_case
->method('lang')
->will($this->returnCallback(array($this, 'return_callback_implode')));
$manager = new phpbb_mock_extension_manager(dirname(__FILE__) . '/', array());
$this->finder = new \phpbb\extension\finder(
new phpbb_mock_extension_manager(dirname(__FILE__) . '/', array()),
$manager,
new \phpbb\filesystem(),
dirname(__FILE__) . '/',
new phpbb_mock_cache()
);
$this->config = new \phpbb\config\config(array('enable_mod_rewrite' => '1'));
$provider = new \phpbb\controller\provider($this->finder);
$provider = new \phpbb\controller\provider();
$this->provider->set_ext_finder($this->finder);
$provider->find(dirname(__FILE__) . '/');
$this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $provider, '', 'php');
$this->helper = new \phpbb\controller\helper($this->template, $this->user, $this->config, $provider, $manager, '', 'php');
$this->pagination = new \phpbb\pagination($this->template, $this->user, $this->helper);
}