|
|
|
|
@ -41,7 +41,7 @@ class Psr4AutoloaderClass { |
|
|
|
|
return $this->loaded_files; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
/** |
|
|
|
|
* Adds a base directory for a namespace prefix. |
|
|
|
|
* |
|
|
|
|
* @param string $prefix The namespace prefix. |
|
|
|
|
@ -73,11 +73,11 @@ class Psr4AutoloaderClass { |
|
|
|
|
* failure. |
|
|
|
|
*/ |
|
|
|
|
public function load_class(string $class): false|string { |
|
|
|
|
/** |
|
|
|
|
* Semi-Fix for non-namespaced classes |
|
|
|
|
*/ |
|
|
|
|
if (substr_count($class, '\\') < 2) { |
|
|
|
|
return ($this->load_mapped_file($class, $class)); |
|
|
|
|
if (! strrpos($class, '\\')) { |
|
|
|
|
$ret = ($this->load_mapped_file($class . '\\', $class)); |
|
|
|
|
if ($ret !== false) { |
|
|
|
|
return $ret; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$prefix = $class; |
|
|
|
|
while (false !== $pos = strrpos($prefix, '\\')) { |
|
|
|
|
@ -89,7 +89,7 @@ class Psr4AutoloaderClass { |
|
|
|
|
} |
|
|
|
|
$prefix = rtrim($prefix, '\\'); |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
return ($this->loader($class, $class)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private function decode(false|string $var): array { |
|
|
|
|
@ -105,44 +105,27 @@ class Psr4AutoloaderClass { |
|
|
|
|
return []; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Load the mapped file for a namespace prefix and relative class. |
|
|
|
|
* |
|
|
|
|
* @param string $prefix The namespace prefix. |
|
|
|
|
* @param string $relative_class The relative class name. |
|
|
|
|
* @return mixed Boolean false if no mapped file can be loaded, or the |
|
|
|
|
* name of the mapped file that was loaded. |
|
|
|
|
*/ |
|
|
|
|
protected function load_mapped_file(string $prefix, string $relative_class): false | string { |
|
|
|
|
if ($prefix === $relative_class) { |
|
|
|
|
$parts = explode('\\', $prefix); |
|
|
|
|
$last = array_pop($parts); |
|
|
|
|
$parts = array(implode('\\', $parts), $last); |
|
|
|
|
$prefix = $parts[0] ?? 'tts'; |
|
|
|
|
$prefix = trim($prefix, '\\') . '\\'; |
|
|
|
|
protected function loader(string $prefix, string $relative_class): false | string { |
|
|
|
|
$parts = explode('\\', $prefix); |
|
|
|
|
$last = array_pop($parts); |
|
|
|
|
$parts = array(implode('\\', $parts), $last); |
|
|
|
|
$prefix = $parts[0] ?? 'tts'; |
|
|
|
|
$prefix = trim($prefix, '\\') . '\\'; |
|
|
|
|
|
|
|
|
|
$reversedParts = explode('\\', strrev($relative_class), 2); |
|
|
|
|
$relative_class = strrev($reversedParts[0]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$reversedParts = explode('\\', strrev($relative_class), 2); |
|
|
|
|
$relative_class = strrev($reversedParts[0]); |
|
|
|
|
|
|
|
|
|
if (isset($this->prefixes[$prefix]) === false) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$fw = rtrim(\bs_tts\site_helper::get_fw_dist(), "/") . "/"; |
|
|
|
|
foreach ($this->prefixes[$prefix] as $base_dir) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$bd = rtrim($base_dir, "/") . "/"; |
|
|
|
|
if ($fw !== false && $prefix === 'tts\\' && $bd === $fw) { |
|
|
|
|
$rc = str_replace('\\', '', $relative_class); |
|
|
|
|
|
|
|
|
|
$tts_arrays = $GLOBALS['tts_arrays'] ?? false; |
|
|
|
|
$ta = $this->decode($tts_arrays); |
|
|
|
|
if (count($ta) && in_array($rc, $ta)) { |
|
|
|
|
if ($this->require_file($bd, "tts_arrays.php")) { |
|
|
|
|
return "tts_arrays.php"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$tts_extras = $GLOBALS['tts_extras'] ?? false; |
|
|
|
|
$te = $this->decode($tts_extras); |
|
|
|
|
if (count($te) && in_array($rc, $te)) { |
|
|
|
|
@ -150,17 +133,41 @@ class Psr4AutoloaderClass { |
|
|
|
|
return "tts_extras.php"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$file = str_replace('\\', '/', $relative_class) . '.php'; |
|
|
|
|
if ($this->require_file($base_dir, $file)) { |
|
|
|
|
return $file; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$tts_arrays = $GLOBALS['tts_arrays'] ?? false; |
|
|
|
|
$ta = $this->decode($tts_arrays); |
|
|
|
|
if (count($ta) && in_array($rc, $ta)) { |
|
|
|
|
if ($this->require_file($bd, "tts_arrays.php")) { |
|
|
|
|
return "tts_arrays.php"; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Load the mapped file for a namespace prefix and relative class. |
|
|
|
|
* |
|
|
|
|
* @param string $prefix The namespace prefix. |
|
|
|
|
* @param string $relative_class The relative class name. |
|
|
|
|
* @return mixed Boolean false if no mapped file can be loaded, or the |
|
|
|
|
* name of the mapped file that was loaded. |
|
|
|
|
*/ |
|
|
|
|
protected function load_mapped_file(string $prefix, string $relative_class): false | string { |
|
|
|
|
if (isset($this->prefixes[$prefix]) === false) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
foreach ($this->prefixes[$prefix] as $base_dir) { |
|
|
|
|
$file = str_replace('\\', '/', $relative_class) . '.php'; |
|
|
|
|
if ($this->require_file($base_dir, $file)) { |
|
|
|
|
return $file; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* If a file exists, require it from the file system. |
|
|
|
|
* |
|
|
|
|
|