[feature/auto-loading] Added autoloader to common and ensured compatability

The autoloader is registered in install without caching, since caching is set
up during installation. This provides the same functionality, performance is
not a concern during installation anyway.

In common.php the autoloader is instantiated after the cache is initialised and
is started with the standard cache backend used for other cached values.

A few places in the code using class_exists had to be updated to explicitly
avoid autoloading, since they are used to check whether a file needs to be
included which does not (yet) follow the naming scheme the autoloader follows.

PHPBB3-9682
This commit is contained in:
Nils Adermann 2010-06-25 14:38:53 +02:00
parent 22c3041e12
commit dea1d660fb
10 changed files with 27 additions and 19 deletions

View file

@ -188,6 +188,7 @@ if (!empty($load_extensions) && function_exists('dl'))
} }
// Include files // 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/acm/acm_' . $acm_type . '.' . $phpEx);
require($phpbb_root_path . 'includes/cache.' . $phpEx); require($phpbb_root_path . 'includes/cache.' . $phpEx);
require($phpbb_root_path . 'includes/template.' . $phpEx); require($phpbb_root_path . 'includes/template.' . $phpEx);
@ -211,6 +212,9 @@ $template = new template();
$cache = new cache(); $cache = new cache();
$db = new $sql_db(); $db = new $sql_db();
$class_loader = new phpbb_class_loader($phpbb_root_path, '.' . $phpEx, $cache);
$class_loader->register();
// Connect to DB // Connect to DB
$db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, defined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK : false); $db->sql_connect($dbhost, $dbuser, $dbpasswd, $dbname, $dbport, false, defined('PHPBB_DB_NEW_LINK') ? PHPBB_DB_NEW_LINK : false);

View file

@ -69,7 +69,7 @@ function login_db(&$username, &$password)
if ($show_captcha) if ($show_captcha)
{ {
// Visual Confirmation handling // Visual Confirmation handling
if (!class_exists('phpbb_captcha_factory')) if (!class_exists('phpbb_captcha_factory', false))
{ {
global $phpbb_root_path, $phpEx; global $phpbb_root_path, $phpEx;
include ($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx); include ($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx);
@ -90,7 +90,7 @@ function login_db(&$username, &$password)
{ {
$captcha->reset(); $captcha->reset();
} }
} }
// If the password convert flag is set we need to convert it // If the password convert flag is set we need to convert it

View file

@ -19,7 +19,7 @@ if (!defined('IN_PHPBB'))
/** /**
* Placeholder for autoload * Placeholder for autoload
*/ */
if (!class_exists('phpbb_default_captcha')) if (!class_exists('phpbb_default_captcha', false))
{ {
include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx); include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx);
} }

View file

@ -19,7 +19,7 @@ if (!defined('IN_PHPBB'))
/** /**
* Placeholder for autoload * Placeholder for autoload
*/ */
if (!class_exists('phpbb_default_captcha')) if (!class_exists('phpbb_default_captcha', false))
{ {
include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx); include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx);
} }

View file

@ -19,7 +19,7 @@ if (!defined('IN_PHPBB'))
/** /**
* Placeholder for autoload * Placeholder for autoload
*/ */
if (!class_exists('phpbb_default_captcha')) if (!class_exists('phpbb_default_captcha', false))
{ {
include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx); include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx);
} }

View file

@ -87,7 +87,7 @@ class phpbb_captcha_qa
} }
$db->sql_freeresult($result); $db->sql_freeresult($result);
} }
// okay, if there is a confirm_id, we try to load that confirm's state. If not, we try to find one // okay, if there is a confirm_id, we try to load that confirm's state. If not, we try to find one
if (!$this->load_answer() && (!$this->load_confirm_id() || !$this->load_answer())) if (!$this->load_answer() && (!$this->load_confirm_id() || !$this->load_answer()))
{ {
@ -113,7 +113,7 @@ class phpbb_captcha_qa
{ {
global $db, $phpbb_root_path, $phpEx; global $db, $phpbb_root_path, $phpEx;
if (!class_exists('phpbb_db_tools')) if (!class_exists('phpbb_db_tools', false))
{ {
include("$phpbb_root_path/includes/db/db_tools.$phpEx"); include("$phpbb_root_path/includes/db/db_tools.$phpEx");
} }
@ -365,12 +365,12 @@ class phpbb_captcha_qa
global $config, $db, $user; global $config, $db, $user;
$error = ''; $error = '';
if (!sizeof($this->question_ids)) if (!sizeof($this->question_ids))
{ {
return false; return false;
} }
if (!$this->confirm_id) if (!$this->confirm_id)
{ {
$error = $user->lang['CONFIRM_QUESTION_WRONG']; $error = $user->lang['CONFIRM_QUESTION_WRONG'];
@ -434,7 +434,7 @@ class phpbb_captcha_qa
function reselect_question() function reselect_question()
{ {
global $db, $user; global $db, $user;
if (!sizeof($this->question_ids)) if (!sizeof($this->question_ids))
{ {
return false; return false;
@ -482,8 +482,8 @@ class phpbb_captcha_qa
global $db, $user; global $db, $user;
$sql = 'SELECT confirm_id $sql = 'SELECT confirm_id
FROM ' . CAPTCHA_QA_CONFIRM_TABLE . " FROM ' . CAPTCHA_QA_CONFIRM_TABLE . "
WHERE WHERE
session_id = '" . $db->sql_escape($user->session_id) . "' session_id = '" . $db->sql_escape($user->session_id) . "'
AND lang_iso = '" . $db->sql_escape($this->question_lang) . "' AND lang_iso = '" . $db->sql_escape($this->question_lang) . "'
AND confirm_type = " . $this->type; AND confirm_type = " . $this->type;
@ -505,7 +505,7 @@ class phpbb_captcha_qa
function load_answer() function load_answer()
{ {
global $db, $user; global $db, $user;
if (!strlen($this->confirm_id) || !sizeof($this->question_ids)) if (!strlen($this->confirm_id) || !sizeof($this->question_ids))
{ {
return false; return false;
@ -990,9 +990,9 @@ class phpbb_captcha_qa
return $langs; return $langs;
} }
/** /**
* See if there is a question other than the one we have * See if there is a question other than the one we have
*/ */

View file

@ -16,7 +16,7 @@ if (!defined('IN_PHPBB'))
exit; exit;
} }
if (!class_exists('phpbb_default_captcha')) if (!class_exists('phpbb_default_captcha', false))
{ {
// we need the classic captcha code for tracking solutions and attempts // we need the classic captcha code for tracking solutions and attempts
include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx); include($phpbb_root_path . 'includes/captcha/plugins/captcha_abstract.' . $phpEx);

View file

@ -2840,7 +2840,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
{ {
global $db, $user, $template, $auth, $phpEx, $phpbb_root_path, $config; global $db, $user, $template, $auth, $phpEx, $phpbb_root_path, $config;
if (!class_exists('phpbb_captcha_factory')) if (!class_exists('phpbb_captcha_factory', false))
{ {
include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx); include($phpbb_root_path . 'includes/captcha/captcha_factory.' . $phpEx);
} }

View file

@ -983,7 +983,7 @@ class session
} }
// only called from CRON; should be a safe workaround until the infrastructure gets going // only called from CRON; should be a safe workaround until the infrastructure gets going
if (!class_exists('phpbb_captcha_factory')) if (!class_exists('phpbb_captcha_factory', false))
{ {
include($phpbb_root_path . "includes/captcha/captcha_factory." . $phpEx); include($phpbb_root_path . "includes/captcha/captcha_factory." . $phpEx);
} }

View file

@ -152,6 +152,7 @@ else
@ini_set('memory_limit', $mem_limit); @ini_set('memory_limit', $mem_limit);
// Include essential scripts // Include essential scripts
require($phpbb_root_path . 'includes/class_loader.' . $phpEx);
require($phpbb_root_path . 'includes/functions.' . $phpEx); require($phpbb_root_path . 'includes/functions.' . $phpEx);
if (file_exists($phpbb_root_path . 'includes/functions_content.' . $phpEx)) if (file_exists($phpbb_root_path . 'includes/functions_content.' . $phpEx))
@ -168,6 +169,9 @@ include($phpbb_root_path . 'includes/functions_admin.' . $phpEx);
include($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx); include($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);
require($phpbb_root_path . 'includes/functions_install.' . $phpEx); require($phpbb_root_path . 'includes/functions_install.' . $phpEx);
$class_loader = new phpbb_class_loader($phpbb_root_path, '.' . $phpEx);
$class_loader->register();
// Try and load an appropriate language if required // Try and load an appropriate language if required
$language = basename(request_var('language', '')); $language = basename(request_var('language', ''));