From 456de639123ae3da6320bed6140ab69ac9925e74 Mon Sep 17 00:00:00 2001 From: Igor Wiedler Date: Tue, 31 Aug 2010 21:26:50 +0200 Subject: [PATCH] [feature/request-class] Refactor request classes to use autoloading All class names have been adjusted to use a phpbb_request prefix, allowing them to be autoloaded. Also introduces some improvements to autoloading in general. PHPBB3-9716 --- phpBB/common.php | 15 ++++++++------- phpBB/includes/functions.php | 4 ++-- .../includes/request/deactivated_super_global.php | 2 +- .../{request_interface.php => interface.php} | 0 phpBB/includes/request/request.php | 12 ++++++------ phpBB/includes/request/type_cast_helper.php | 2 +- .../request/type_cast_helper_interface.php | 2 +- phpBB/install/database_update.php | 13 ++++++------- phpBB/install/index.php | 2 +- phpBB/style.php | 7 ++++++- tests/request/deactivated_super_global.php | 3 ++- tests/request/request.php | 4 ++-- tests/request/request_var.php | 2 +- tests/request/type_cast_helper.php | 2 +- 14 files changed, 38 insertions(+), 32 deletions(-) rename phpBB/includes/request/{request_interface.php => interface.php} (100%) diff --git a/phpBB/common.php b/phpBB/common.php index 57a1384ee4..41df3049a1 100644 --- a/phpBB/common.php +++ b/phpBB/common.php @@ -195,11 +195,6 @@ require($phpbb_root_path . 'includes/template.' . $phpEx); require($phpbb_root_path . 'includes/session.' . $phpEx); require($phpbb_root_path . 'includes/auth.' . $phpEx); -require($phpbb_root_path . 'includes/request/type_cast_helper_interface.' . $phpEx); -require($phpbb_root_path . 'includes/request/type_cast_helper.' . $phpEx); -require($phpbb_root_path . 'includes/request/deactivated_super_global.' . $phpEx); -require($phpbb_root_path . 'includes/request/request_interface.' . $phpEx); -require($phpbb_root_path . 'includes/request/request.' . $phpEx); require($phpbb_root_path . 'includes/functions.' . $phpEx); require($phpbb_root_path . 'includes/functions_content.' . $phpEx); @@ -210,12 +205,18 @@ require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx); // Set PHP error handler to ours set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler'); +// Cache must be loaded before class loader +$cache = new cache(); + +// Setup class loader first +$class_loader = new phpbb_class_loader($phpbb_root_path, '.' . $phpEx, $cache); +$class_loader->register(); + // Instantiate some basic classes -$request = new phpbb_request(new phpbb_type_cast_helper()); +$request = new phpbb_request(); $user = new user(); $auth = new auth(); $template = new template(); -$cache = new cache(); $db = new $sql_db(); $class_loader = new phpbb_class_loader($phpbb_root_path, '.' . $phpEx, $cache); diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 81c5c40fd1..029281ee84 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -21,7 +21,7 @@ if (!defined('IN_PHPBB')) function set_var(&$result, $var, $type, $multibyte = false) { // no need for dependency injection here, if you have the object, call the method yourself! - $type_cast_helper = new phpbb_type_cast_helper(); + $type_cast_helper = new phpbb_request_type_cast_helper(); $type_cast_helper->set_var($result, $var, $type, $multibyte); } @@ -70,7 +70,7 @@ function request_var($var_name, $default, $multibyte = false, $cookie = false, p { // false param: enable super globals, so the created request class does not // make super globals inaccessible everywhere outside this function. - $tmp_request = new phpbb_request(new phpbb_type_cast_helper(), false); + $tmp_request = new phpbb_request(new phpbb_request_type_cast_helper(), false); } return $tmp_request->variable($var_name, $default, $multibyte, ($cookie) ? phpbb_request_interface::COOKIE : phpbb_request_interface::REQUEST); diff --git a/phpBB/includes/request/deactivated_super_global.php b/phpBB/includes/request/deactivated_super_global.php index 9152d10811..d7a5b3145f 100644 --- a/phpBB/includes/request/deactivated_super_global.php +++ b/phpBB/includes/request/deactivated_super_global.php @@ -21,7 +21,7 @@ if (!defined('IN_PHPBB')) * * @package phpbb_request */ -class phpbb_deactivated_super_global implements ArrayAccess, Countable, IteratorAggregate +class phpbb_request_deactivated_super_global implements ArrayAccess, Countable, IteratorAggregate { /** * @var string Holds the name of the superglobal this is replacing. diff --git a/phpBB/includes/request/request_interface.php b/phpBB/includes/request/interface.php similarity index 100% rename from phpBB/includes/request/request_interface.php rename to phpBB/includes/request/interface.php diff --git a/phpBB/includes/request/request.php b/phpBB/includes/request/request.php index a473e40426..7d284a9bf7 100644 --- a/phpBB/includes/request/request.php +++ b/phpBB/includes/request/request.php @@ -51,15 +51,15 @@ class phpbb_request implements phpbb_request_interface protected $input; /** - * @var phpbb_type_cast_helper_interface An instance of a type cast helper providing convenience methods for type conversions. + * @var phpbb_request_type_cast_helper_interface An instance of a type cast helper providing convenience methods for type conversions. */ protected $type_cast_helper; /** * Initialises the request class, that means it stores all input data in {@link $input input} - * and then calls {@link phpbb_deactivated_super_global phpbb_deactivated_super_global} + * and then calls {@link phpbb_request_deactivated_super_global phpbb_request_deactivated_super_global} */ - public function __construct(phpbb_type_cast_helper_interface $type_cast_helper = null, $disable_super_globals = true) + public function __construct(phpbb_request_type_cast_helper_interface $type_cast_helper = null, $disable_super_globals = true) { if ($type_cast_helper) { @@ -67,7 +67,7 @@ class phpbb_request implements phpbb_request_interface } else { - $this->type_cast_helper = new phpbb_type_cast_helper(); + $this->type_cast_helper = new phpbb_request_type_cast_helper(); } foreach ($this->super_globals as $const => $super_global) @@ -97,7 +97,7 @@ class phpbb_request implements phpbb_request_interface /** * Disables access of super globals specified in $super_globals. - * This is achieved by overwriting the super globals with instances of {@link phpbb_deactivated_super_global phpbb_deactivated_super_global} + * This is achieved by overwriting the super globals with instances of {@link phpbb_request_deactivated_super_global phpbb_request_deactivated_super_global} */ public function disable_super_globals() { @@ -106,7 +106,7 @@ class phpbb_request implements phpbb_request_interface foreach ($this->super_globals as $const => $super_global) { unset($GLOBALS[$super_global]); - $GLOBALS[$super_global] = new phpbb_deactivated_super_global($this, $super_global, $const); + $GLOBALS[$super_global] = new phpbb_request_deactivated_super_global($this, $super_global, $const); } $this->super_globals_disabled = true; diff --git a/phpBB/includes/request/type_cast_helper.php b/phpBB/includes/request/type_cast_helper.php index 7b8aacc5a9..c39bbebe01 100644 --- a/phpBB/includes/request/type_cast_helper.php +++ b/phpBB/includes/request/type_cast_helper.php @@ -20,7 +20,7 @@ if (!defined('IN_PHPBB')) * * @package phpbb_request */ -class phpbb_type_cast_helper implements phpbb_type_cast_helper_interface +class phpbb_request_type_cast_helper implements phpbb_request_type_cast_helper_interface { /** diff --git a/phpBB/includes/request/type_cast_helper_interface.php b/phpBB/includes/request/type_cast_helper_interface.php index 96e984003c..366bd2e6ce 100644 --- a/phpBB/includes/request/type_cast_helper_interface.php +++ b/phpBB/includes/request/type_cast_helper_interface.php @@ -20,7 +20,7 @@ if (!defined('IN_PHPBB')) * * @package phpbb_request */ -interface phpbb_type_cast_helper_interface +interface phpbb_request_type_cast_helper_interface { /** * Recursively applies addslashes to a variable. diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index 483f24f3e5..69f5f58563 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -66,11 +66,6 @@ require($phpbb_root_path . 'includes/template.' . $phpEx); require($phpbb_root_path . 'includes/session.' . $phpEx); require($phpbb_root_path . 'includes/auth.' . $phpEx); -require($phpbb_root_path . 'includes/request/type_cast_helper_interface.' . $phpEx); -require($phpbb_root_path . 'includes/request/type_cast_helper.' . $phpEx); -require($phpbb_root_path . 'includes/request/deactivated_super_global.' . $phpEx); -require($phpbb_root_path . 'includes/request/request_interface.' . $phpEx); -require($phpbb_root_path . 'includes/request/request.' . $phpEx); require($phpbb_root_path . 'includes/functions.' . $phpEx); if (file_exists($phpbb_root_path . 'includes/functions_content.' . $phpEx)) @@ -97,9 +92,13 @@ else define('STRIP', (get_magic_quotes_gpc()) ? true : false); } -$request = new phpbb_request(new phpbb_type_cast_helper()); -$user = new user(); $cache = new cache(); + +$class_loader = new phpbb_class_loader($phpbb_root_path, '.' . $phpEx, $cache); +$class_loader->register(); + +$request = new phpbb_request(); +$user = new user(); $db = new $sql_db(); // make sure request_var uses this request instance diff --git a/phpBB/install/index.php b/phpBB/install/index.php index 5862e2e8d2..50f0a049f2 100644 --- a/phpBB/install/index.php +++ b/phpBB/install/index.php @@ -172,7 +172,7 @@ require($phpbb_root_path . 'includes/functions_install.' . $phpEx); $class_loader = new phpbb_class_loader($phpbb_root_path, '.' . $phpEx); $class_loader->register(); -$request = new phpbb_request(new phpbb_type_cast_helper()); +$request = new phpbb_request(); // make sure request_var uses this request instance request_var('', 0, false, false, $request); // "dependency injection" for a function diff --git a/phpBB/style.php b/phpBB/style.php index 8ca1751391..026b5eecfc 100644 --- a/phpBB/style.php +++ b/phpBB/style.php @@ -55,15 +55,20 @@ $id = (isset($_GET['id'])) ? intval($_GET['id']) : 0; if ($id) { // Include files + require($phpbb_root_path . 'includes/class_loader.' . $phpEx); require($phpbb_root_path . 'includes/acm/acm_' . $acm_type . '.' . $phpEx); require($phpbb_root_path . 'includes/cache.' . $phpEx); require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx); require($phpbb_root_path . 'includes/constants.' . $phpEx); require($phpbb_root_path . 'includes/functions.' . $phpEx); - $db = new $sql_db(); $cache = new cache(); + $class_loader = new phpbb_class_loader($phpbb_root_path, '.' . $phpEx, $cache); + $class_loader->register(); + + $db = new $sql_db(); + // Connect to DB if (!@$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, false)) { diff --git a/tests/request/deactivated_super_global.php b/tests/request/deactivated_super_global.php index 2991badd1a..3c7a638e38 100644 --- a/tests/request/deactivated_super_global.php +++ b/tests/request/deactivated_super_global.php @@ -9,6 +9,7 @@ */ require_once 'test_framework/framework.php'; +require_once '../phpBB/includes/request/interface.php'; require_once '../phpBB/includes/request/deactivated_super_global.php'; class phpbb_deactivated_super_global_test extends phpbb_test_case @@ -19,7 +20,7 @@ class phpbb_deactivated_super_global_test extends phpbb_test_case public function test_write_triggers_error() { $this->setExpectedTriggerError(E_USER_ERROR); - $obj = new phpbb_deactivated_super_global($this->getMock('phpbb_request_interface'), 'obj', phpbb_request_interface::POST); + $obj = new phpbb_request_deactivated_super_global($this->getMock('phpbb_request_interface'), 'obj', phpbb_request_interface::POST); $obj->offsetSet(0, 0); } } diff --git a/tests/request/request.php b/tests/request/request.php index ebfc3ba2b0..cf275e763c 100644 --- a/tests/request/request.php +++ b/tests/request/request.php @@ -10,7 +10,7 @@ require_once 'test_framework/framework.php'; require_once '../phpBB/includes/request/type_cast_helper_interface.php'; -require_once '../phpBB/includes/request/request_interface.php'; +require_once '../phpBB/includes/request/interface.php'; require_once '../phpBB/includes/request/deactivated_super_global.php'; require_once '../phpBB/includes/request/request.php'; @@ -28,7 +28,7 @@ class phpbb_request_test extends phpbb_test_case $_REQUEST['test'] = 3; $_GET['unset'] = ''; - $this->type_cast_helper = $this->getMock('phpbb_type_cast_helper_interface'); + $this->type_cast_helper = $this->getMock('phpbb_request_type_cast_helper_interface'); $this->request = new phpbb_request($this->type_cast_helper); } diff --git a/tests/request/request_var.php b/tests/request/request_var.php index 5bdcb5d4e7..857dbe55a5 100644 --- a/tests/request/request_var.php +++ b/tests/request/request_var.php @@ -11,7 +11,7 @@ require_once 'test_framework/framework.php'; require_once '../phpBB/includes/request/type_cast_helper_interface.php'; require_once '../phpBB/includes/request/type_cast_helper.php'; require_once '../phpBB/includes/request/deactivated_super_global.php'; -require_once '../phpBB/includes/request/request_interface.php'; +require_once '../phpBB/includes/request/interface.php'; require_once '../phpBB/includes/request/request.php'; require_once '../phpBB/includes/functions.php'; diff --git a/tests/request/type_cast_helper.php b/tests/request/type_cast_helper.php index aba8523ec3..51687c186d 100644 --- a/tests/request/type_cast_helper.php +++ b/tests/request/type_cast_helper.php @@ -18,7 +18,7 @@ class phpbb_type_cast_helper_test extends phpbb_test_case protected function setUp() { - $this->type_cast_helper = new phpbb_type_cast_helper(); + $this->type_cast_helper = new phpbb_request_type_cast_helper(); } public function test_addslashes_recursively()