Файл: vendor/rmccue/requests/src/Autoload.php
Строк: 240
<?php
/**
* Autoloader for Requests for PHP.
*
* Include this file if you'd like to avoid having to create your own autoloader.
*
* @package Requests
* @since 2.0.0
*
* @codeCoverageIgnore
*/
namespace WpOrgRequests;
/*
* Ensure the autoloader is only declared once.
* This safeguard is in place as this is the typical entry point for this library
* and this file being required unconditionally could easily cause
* fatal "Class already declared" errors.
*/
if (class_exists('WpOrgRequestsAutoload') === false) {
/**
* Autoloader for Requests for PHP.
*
* This autoloader supports the PSR-4 based Requests 2.0.0 classes in a case-sensitive manner
* as the most common server OS-es are case-sensitive and the file names are in mixed case.
*
* For the PSR-0 Requests 1.x BC-layer, requested classes will be treated case-insensitively.
*
* @package Requests
*/
final class Autoload {
/**
* List of the old PSR-0 class names in lowercase as keys with their PSR-4 case-sensitive name as a value.
*
* @var array
*/
private static $deprecated_classes = [
// Interfaces.
'requests_auth' => 'WpOrgRequestsAuth',
'requests_hooker' => 'WpOrgRequestsHookManager',
'requests_proxy' => 'WpOrgRequestsProxy',
'requests_transport' => 'WpOrgRequestsTransport',
// Classes.
'requests_cookie' => 'WpOrgRequestsCookie',
'requests_exception' => 'WpOrgRequestsException',
'requests_hooks' => 'WpOrgRequestsHooks',
'requests_idnaencoder' => 'WpOrgRequestsIdnaEncoder',
'requests_ipv6' => 'WpOrgRequestsIpv6',
'requests_iri' => 'WpOrgRequestsIri',
'requests_response' => 'WpOrgRequestsResponse',
'requests_session' => 'WpOrgRequestsSession',
'requests_ssl' => 'WpOrgRequestsSsl',
'requests_auth_basic' => 'WpOrgRequestsAuthBasic',
'requests_cookie_jar' => 'WpOrgRequestsCookieJar',
'requests_proxy_http' => 'WpOrgRequestsProxyHttp',
'requests_response_headers' => 'WpOrgRequestsResponseHeaders',
'requests_transport_curl' => 'WpOrgRequestsTransportCurl',
'requests_transport_fsockopen' => 'WpOrgRequestsTransportFsockopen',
'requests_utility_caseinsensitivedictionary' => 'WpOrgRequestsUtilityCaseInsensitiveDictionary',
'requests_utility_filterediterator' => 'WpOrgRequestsUtilityFilteredIterator',
'requests_exception_http' => 'WpOrgRequestsExceptionHttp',
'requests_exception_transport' => 'WpOrgRequestsExceptionTransport',
'requests_exception_transport_curl' => 'WpOrgRequestsExceptionTransportCurl',
'requests_exception_http_304' => 'WpOrgRequestsExceptionHttpStatus304',
'requests_exception_http_305' => 'WpOrgRequestsExceptionHttpStatus305',
'requests_exception_http_306' => 'WpOrgRequestsExceptionHttpStatus306',
'requests_exception_http_400' => 'WpOrgRequestsExceptionHttpStatus400',
'requests_exception_http_401' => 'WpOrgRequestsExceptionHttpStatus401',
'requests_exception_http_402' => 'WpOrgRequestsExceptionHttpStatus402',
'requests_exception_http_403' => 'WpOrgRequestsExceptionHttpStatus403',
'requests_exception_http_404' => 'WpOrgRequestsExceptionHttpStatus404',
'requests_exception_http_405' => 'WpOrgRequestsExceptionHttpStatus405',
'requests_exception_http_406' => 'WpOrgRequestsExceptionHttpStatus406',
'requests_exception_http_407' => 'WpOrgRequestsExceptionHttpStatus407',
'requests_exception_http_408' => 'WpOrgRequestsExceptionHttpStatus408',
'requests_exception_http_409' => 'WpOrgRequestsExceptionHttpStatus409',
'requests_exception_http_410' => 'WpOrgRequestsExceptionHttpStatus410',
'requests_exception_http_411' => 'WpOrgRequestsExceptionHttpStatus411',
'requests_exception_http_412' => 'WpOrgRequestsExceptionHttpStatus412',
'requests_exception_http_413' => 'WpOrgRequestsExceptionHttpStatus413',
'requests_exception_http_414' => 'WpOrgRequestsExceptionHttpStatus414',
'requests_exception_http_415' => 'WpOrgRequestsExceptionHttpStatus415',
'requests_exception_http_416' => 'WpOrgRequestsExceptionHttpStatus416',
'requests_exception_http_417' => 'WpOrgRequestsExceptionHttpStatus417',
'requests_exception_http_418' => 'WpOrgRequestsExceptionHttpStatus418',
'requests_exception_http_428' => 'WpOrgRequestsExceptionHttpStatus428',
'requests_exception_http_429' => 'WpOrgRequestsExceptionHttpStatus429',
'requests_exception_http_431' => 'WpOrgRequestsExceptionHttpStatus431',
'requests_exception_http_500' => 'WpOrgRequestsExceptionHttpStatus500',
'requests_exception_http_501' => 'WpOrgRequestsExceptionHttpStatus501',
'requests_exception_http_502' => 'WpOrgRequestsExceptionHttpStatus502',
'requests_exception_http_503' => 'WpOrgRequestsExceptionHttpStatus503',
'requests_exception_http_504' => 'WpOrgRequestsExceptionHttpStatus504',
'requests_exception_http_505' => 'WpOrgRequestsExceptionHttpStatus505',
'requests_exception_http_511' => 'WpOrgRequestsExceptionHttpStatus511',
'requests_exception_http_unknown' => 'WpOrgRequestsExceptionHttpStatusUnknown',
];
/**
* Register the autoloader.
*
* Note: the autoloader is *prepended* in the autoload queue.
* This is done to ensure that the Requests 2.0 autoloader takes precedence
* over a potentially (dependency-registered) Requests 1.x autoloader.
*
* @internal This method contains a safeguard against the autoloader being
* registered multiple times. This safeguard uses a global constant to
* (hopefully/in most cases) still function correctly, even if the
* class would be renamed.
*
* @return void
*/
public static function register() {
if (defined('REQUESTS_AUTOLOAD_REGISTERED') === false) {
spl_autoload_register([self::class, 'load'], true);
define('REQUESTS_AUTOLOAD_REGISTERED', true);
}
}
/**
* Autoloader.
*
* @param string $class_name Name of the class name to load.
*
* @return bool Whether a class was loaded or not.
*/
public static function load($class_name) {
// Check that the class starts with "Requests" (PSR-0) or "WpOrgRequests" (PSR-4).
$psr_4_prefix_pos = strpos($class_name, 'WpOrg\Requests\');
if (stripos($class_name, 'Requests') !== 0 && $psr_4_prefix_pos !== 0) {
return false;
}
$class_lower = strtolower($class_name);
if ($class_lower === 'requests') {
// Reference to the original PSR-0 Requests class.
$file = dirname(__DIR__) . '/library/Requests.php';
} elseif ($psr_4_prefix_pos === 0) {
// PSR-4 classname.
$file = __DIR__ . '/' . strtr(substr($class_name, 15), '\', '/') . '.php';
}
if (isset($file) && file_exists($file)) {
include $file;
return true;
}
/*
* Okay, so the class starts with "Requests", but we couldn't find the file.
* If this is one of the deprecated/renamed PSR-0 classes being requested,
* let's alias it to the new name and throw a deprecation notice.
*/
if (isset(self::$deprecated_classes[$class_lower])) {
/*
* Integrators who cannot yet upgrade to the PSR-4 class names can silence deprecations
* by defining a `REQUESTS_SILENCE_PSR0_DEPRECATIONS` constant and setting it to `true`.
* The constant needs to be defined before the first deprecated class is requested
* via this autoloader.
*/
if (!defined('REQUESTS_SILENCE_PSR0_DEPRECATIONS') || REQUESTS_SILENCE_PSR0_DEPRECATIONS !== true) {
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error
trigger_error(
'The PSR-0 `Requests_...` class names in the Request library are deprecated.'
. ' Switch to the PSR-4 `WpOrgRequests...` class names at your earliest convenience.',
E_USER_DEPRECATED
);
// Prevent the deprecation notice from being thrown twice.
if (!defined('REQUESTS_SILENCE_PSR0_DEPRECATIONS')) {
define('REQUESTS_SILENCE_PSR0_DEPRECATIONS', true);
}
}
// Create an alias and let the autoloader recursively kick in to load the PSR-4 class.
return class_alias(self::$deprecated_classes[$class_lower], $class_name, true);
}
return false;
}
}
}