mirror of
https://github.com/moodle/moodle.git
synced 2025-01-17 21:49:15 +01:00
Merge branch 'MDL-82747-main' of https://github.com/andrewnicols/moodle
This commit is contained in:
commit
20dcede4b5
10
.upgradenotes/MDL-82747-2024080805044739.yml
Normal file
10
.upgradenotes/MDL-82747-2024080805044739.yml
Normal file
@ -0,0 +1,10 @@
|
||||
issueNumber: MDL-82747
|
||||
notes:
|
||||
core:
|
||||
- message: >-
|
||||
The Moodle autoloader should now be registered using
|
||||
`\core\component::register_autoloader` rather than manually doing so in
|
||||
any exceptional location which requires it. It is not normally necessary
|
||||
to include the autoloader manually, as it is registered automatically
|
||||
when the Moodle environment is bootstrapped.
|
||||
type: improved
|
@ -179,13 +179,8 @@ ini_set('include_path', $CFG->libdir.'/pear' . PATH_SEPARATOR . ini_get('include
|
||||
// The core_component class can be used in any scripts, it does not need anything else.
|
||||
require_once($CFG->libdir.'/classes/component.php');
|
||||
|
||||
// Register our classloader, in theory somebody might want to replace it to load other hacked core classes.
|
||||
// Required because the database checks below lead to session interaction which is going to lead us to requiring autoloaded classes.
|
||||
if (defined('COMPONENT_CLASSLOADER')) {
|
||||
spl_autoload_register(COMPONENT_CLASSLOADER);
|
||||
} else {
|
||||
spl_autoload_register('core_component::classloader');
|
||||
}
|
||||
// Register our classloader.
|
||||
\core\component::register_autoloader();
|
||||
|
||||
require_once($CFG->libdir.'/classes/text.php');
|
||||
require_once($CFG->libdir.'/classes/string_manager.php');
|
||||
|
@ -202,12 +202,8 @@ if (!empty($memlimit) and $memlimit != -1) {
|
||||
// the problem is that we need specific version of quickforms and hacked excel files :-(.
|
||||
ini_set('include_path', $CFG->libdir.'/pear' . PATH_SEPARATOR . ini_get('include_path'));
|
||||
|
||||
// Register our classloader, in theory somebody might want to replace it to load other hacked core classes.
|
||||
if (defined('COMPONENT_CLASSLOADER')) {
|
||||
spl_autoload_register(COMPONENT_CLASSLOADER);
|
||||
} else {
|
||||
spl_autoload_register('core_component::classloader');
|
||||
}
|
||||
// Register our classloader.
|
||||
\core\component::register_autoloader();
|
||||
|
||||
// Continue with lib loading.
|
||||
require_once($CFG->libdir.'/classes/text.php');
|
||||
|
@ -149,6 +149,44 @@ class component {
|
||||
\Slim::class => 'lib/slim/slim/Slim',
|
||||
];
|
||||
|
||||
/**
|
||||
* An array containing files which are normally in a package's composer/autoload.files section.
|
||||
*
|
||||
* PHP does not provide a mechanism for automatically including the files that methods are in.
|
||||
*
|
||||
* The Composer autoloader includes all files in this section of the composer.json file during the instantiation of the loader.
|
||||
*
|
||||
* @var array<string>
|
||||
*/
|
||||
protected static $composerautoloadfiles = [
|
||||
'lib/aws-sdk/src/functions.php',
|
||||
'lib/guzzlehttp/guzzle/src/functions_include.php',
|
||||
'lib/jmespath/src/JmesPath.php',
|
||||
'lib/php-di/php-di/src/functions.php',
|
||||
'lib/ralouphi/getallheaders/src/getallheaders.php',
|
||||
'lib/symfony/deprecation-contracts/function.php',
|
||||
];
|
||||
|
||||
/**
|
||||
* Register the Moodle class autoloader.
|
||||
*/
|
||||
public static function register_autoloader(): void {
|
||||
if (defined('COMPONENT_CLASSLOADER')) {
|
||||
spl_autoload_register(COMPONENT_CLASSLOADER);
|
||||
} else {
|
||||
spl_autoload_register([self::class, 'classloader']);
|
||||
}
|
||||
|
||||
// Load any composer-driven autoload files.
|
||||
// This is intended to mimic the behaviour of the standard Composer Autoloader.
|
||||
foreach (static::$composerautoloadfiles as $file) {
|
||||
$path = dirname(__DIR__, 2) . '/' . $file;
|
||||
if (file_exists($path)) {
|
||||
require_once($path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Class loader for Frankenstyle named classes in standard locations.
|
||||
* Frankenstyle namespaces are supported.
|
||||
|
@ -594,12 +594,8 @@ if (NO_OUTPUT_BUFFERING) {
|
||||
// the problem is that we need specific version of quickforms and hacked excel files :-(.
|
||||
ini_set('include_path', $CFG->libdir . '/pear' . PATH_SEPARATOR . ini_get('include_path'));
|
||||
|
||||
// Register our classloader, in theory somebody might want to replace it to load other hacked core classes.
|
||||
if (defined('COMPONENT_CLASSLOADER')) {
|
||||
spl_autoload_register(COMPONENT_CLASSLOADER);
|
||||
} else {
|
||||
spl_autoload_register([\core_component::class, 'classloader']);
|
||||
}
|
||||
// Register our classloader.
|
||||
\core\component::register_autoloader();
|
||||
|
||||
// Special support for highly optimised scripts that do not need libraries and DB connection.
|
||||
if (defined('ABORT_AFTER_CONFIG')) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user