@IsaevDev

Как вам такой autoload для PHP?

Уделите минутку небольшому велосипеду для небольшого проекта

Есть файлы
/Core.php
/Map.php
/custom/Class.php

Определена функция autoload, которая будет брать путь до файла класса из Map.php

При разработке Map.php имеет вид:
<?
class Map
{
public static $inited = false;
}
?>


Суть подхода такова:
После загрузки файлов на сервер, при первом запуске, Core.php проверяет переменную Map::$inited
Обнаружив там false, Core.php рекурсивно обходит все файлы и папки в /custom и составляет массив вида
$map = [
'Class' => '/custom/'
];

После чего перезаписывает класс Map с $inited = true (пересохраняет как файл).
Таким образом при следующем запуске, будет использована созданная карта классов.

PS. Да, я знаю о composer и namespace. Я хочу услышать ваше мнение о моем подходе с технической точки зрения
  • Вопрос задан
  • 538 просмотров
Решения вопроса 3
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
За вас уже все придумали www.php-fig.org/psr/psr-4
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Imho подход плохой.
а) рекурсивно обходить папки - это ооочень долго
б) в нормальной ситуации, у скрипта не должно быть прав на изменение исполняемых файлов.

Собственно для этого и придумали PSR4 (хотя нечто похожее можно и без namespace использовать легко)
Главная идея - по названию класса должно быть однозначно понятно где он лежит.
Если вдруг есть любимый класс у которого название не совпадает с местоположением - вот тогда на сцену выходит map файл который заранее заполняется ручками разработчика.
Ответ написан
DevMan
@DevMan
таковой (по принципу, не реализации) подход вполне себе использовался раньше, да и сейчас используется.
но постепенно идет тенденция на использование composer/psr.

фактически, нужно каждый раз вспоминать где лежит файл (в каком namespace)
имхо - не аргумент, от слова совсем:
- нормальная ide сама подскажет где лежит файл
- рекурсивный grep никто не отменял
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
25 апр. 2024, в 20:02
100000 руб./за проект
25 апр. 2024, в 19:42
49000 руб./за проект
25 апр. 2024, в 19:41
2000 руб./за проект