Этот код берет из файла код php и меняет имя класса на другое имя. Через str_replace замену он делать не хочет. Я так понимаю все дело в том что строка strings() получаться больше 1000 символов и там есть переносы. Но вопрос был в другом, на счёт кодировки если вдруг в файле file.txt она собьётся.
Как обработать эту строку полученную из file.txt
Добавлено: 02.02.2020 / 22:41
Похож на говно код?
class Autoload
{
// Вырезы в пути
protected static $search = [
'\\', 'Core/', 'Module/'
];
// Замена на вырезы в пути
protected static $replace = [
'/', '', ''
];
// Прячем spl_autoload_register
public static function register()
{
//spl_autoload_extensions('.php,.inc');
spl_autoload_register(['Autoload', 'run'], true, true);
}
public static function run(string $class)
{
$class = trim($class, '\\');
$loaded = (strpos($class, 'Module\\') !== false) ? 'module' : 'core';
$class = str_replace(self::$search, self::$replace, $class);
self::$loaded($class);
}
protected static function core(string $class)
{
self::loadFile($class, true);
}
protected static function module(string $class)
{
if ($module = strstr($class, '/', true))
{
$nameModule = $module;
$nameSpace = str_replace($module . '/', '', $class);
}
else
{
$nameModule = $class;
$nameSpace = $class;
}
$class = strtolower($nameModule) . '/components/' . $nameSpace;
self::loadFile($class, false);
}
protected static function loadFile(string $file, bool $dir)
{
$path = ($dir ? CORE : MODULES);
$path .= $file . '.php';
if (file_exists($path))
{
require_once $path;
//return $path;
}
else
die('Компонент <b>' . $file . '</b> не найден');
}
}
return Autoload::register();