summaryrefslogtreecommitdiffstats
path: root/vendor/paragonie/sodium_compat/lib/namespaced.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/paragonie/sodium_compat/lib/namespaced.php')
-rw-r--r--vendor/paragonie/sodium_compat/lib/namespaced.php48
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;
+});