[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-includes/sodium_compat/ -> autoload.php (source)

   1  <?php
   2  
   3  if (PHP_VERSION_ID < 70000) {
   4      if (!is_callable('sodiumCompatAutoloader')) {
   5          /**
   6           * Sodium_Compat autoloader.
   7           *
   8           * @param string $class Class name to be autoloaded.
   9           *
  10           * @return bool         Stop autoloading?
  11           */
  12          function sodiumCompatAutoloader($class)
  13          {
  14              $namespace = 'ParagonIE_Sodium_';
  15              // Does the class use the namespace prefix?
  16              $len = strlen($namespace);
  17              if (strncmp($namespace, $class, $len) !== 0) {
  18                  // no, move to the next registered autoloader
  19                  return false;
  20              }
  21  
  22              // Get the relative class name
  23              $relative_class = substr($class, $len);
  24  
  25              // Replace the namespace prefix with the base directory, replace namespace
  26              // separators with directory separators in the relative class name, append
  27              // with .php
  28              $file = dirname(__FILE__) . '/src/' . str_replace('_', '/', $relative_class) . '.php';
  29              // if the file exists, require it
  30              if (file_exists($file)) {
  31                  require_once $file;
  32                  return true;
  33              }
  34              return false;
  35          }
  36  
  37          // Now that we have an autoloader, let's register it!
  38          spl_autoload_register('sodiumCompatAutoloader');
  39      }
  40  } else {
  41      require_once dirname(__FILE__) . '/autoload-php7.php';
  42  }
  43  
  44  if (!class_exists('SodiumException', false)) {
  45      require_once dirname(__FILE__) . '/src/SodiumException.php';
  46  }
  47  if (PHP_VERSION_ID >= 50300) {
  48      // Namespaces didn't exist before 5.3.0, so don't even try to use this
  49      // unless PHP >= 5.3.0
  50      require_once dirname(__FILE__) . '/lib/namespaced.php';
  51      require_once dirname(__FILE__) . '/lib/sodium_compat.php';
  52  } else {
  53      require_once dirname(__FILE__) . '/src/PHP52/SplFixedArray.php';
  54  }
  55  if (PHP_VERSION_ID < 70200 || !extension_loaded('sodium')) {
  56      if (PHP_VERSION_ID >= 50300 && !defined('SODIUM_CRYPTO_SCALARMULT_BYTES')) {
  57          require_once dirname(__FILE__) . '/lib/php72compat_const.php';
  58      }
  59      if (PHP_VERSION_ID >= 70000) {
  60          assert(class_exists('ParagonIE_Sodium_Compat'), 'Possible filesystem/autoloader bug?');
  61      } else {
  62          assert(class_exists('ParagonIE_Sodium_Compat'));
  63      }
  64      require_once (dirname(__FILE__) . '/lib/php72compat.php');
  65  }


Generated: Tue Oct 27 01:00:08 2020 Cross-referenced by PHPXref 0.7.1