Просмотр поста

.
Microb
Добавлено: 02.02.2020 / 10:40
Этот код берет из файла код 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();