PHP Classes

File: lib/namespaced.php

Recommend this page to a friend!
  Classes of Scott Arciszewski   PHP Sodium Compat   lib/namespaced.php   Download  
File: lib/namespaced.php
Role: Auxiliary script
Content type: text/plain
Description: Auxiliary script
Class: PHP Sodium Compat
Cryptographic functions of libsodium in pure PHP
Author: By
Last change: Fix PHP 5.2 autoload errors
vendor/ may not exist if installed as a dependency
Autoload inside lib/ to prevent constant() / defined() from failing.
Date: 5 years ago
Size: 1,345 bytes
 

Contents

Class file image Download
<?php

require_once dirname(dirname(__FILE__)) . '/autoload.php';

if (
PHP_VERSION_ID < 50300) {
    return;
}

/*
 * This file is just for convenience, to allow developers to reduce verbosity when
 * they add this project to their libraries.
 *
 * Replace this:
 *
 * $x = ParagonIE_Sodium_Compat::crypto_aead_xchacha20poly1305_encrypt(...$args);
 *
 * with this:
 *
 * use ParagonIE\Sodium\Compat;
 *
 * $x = Compat::crypto_aead_xchacha20poly1305_encrypt(...$args);
 */
spl_autoload_register(function ($class) {
    if (
$class[0] === '\\') {
       
$class = substr($class, 1);
    }
   
$namespace = 'ParagonIE\\Sodium';
   
// Does the class use the namespace prefix?
   
$len = strlen($namespace);
    if (
strncmp($namespace, $class, $len) !== 0) {
       
// no, move to the next registered autoloader
       
return false;
    }

   
// Get the relative class name
   
$relative_class = substr($class, $len);

   
// Replace the namespace prefix with the base directory, replace namespace
    // separators with directory separators in the relative class name, append
    // with .php
   
$file = dirname(dirname(__FILE__)) . '/namespaced/' . str_replace('\\', '/', $relative_class) . '.php';
   
// if the file exists, require it
   
if (file_exists($file)) {
        require_once
$file;
        return
true;
    }
    return
false;
});