diff options
Diffstat (limited to 'vendor/paragonie/sodium_compat/lib/namespaced.php')
-rw-r--r-- | vendor/paragonie/sodium_compat/lib/namespaced.php | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/vendor/paragonie/sodium_compat/lib/namespaced.php b/vendor/paragonie/sodium_compat/lib/namespaced.php new file mode 100644 index 0000000..77551fd --- /dev/null +++ b/vendor/paragonie/sodium_compat/lib/namespaced.php @@ -0,0 +1,48 @@ +<?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; +}); |