Задать вопрос
  • Автозагрузка обязывает указывать namespace у всех классов?

    php666
    @php666
    PHP-макака
    1) С точки стандартов программирования, насколько правильно указывать у каждого класса namespace?
    да, это правильно. Один файл, один класс, который должен лежать в определенном пространстве имен.

    2) Какой подход для использования spl_autoload_register из двух перечисленных является более правильным?
    Второй. Ибо это стандарт. "Вызывать несколько раз, в качестве аргумента указав функции, подключающие классы из разных директорий" - это когда у тебя мешанина из кода и ты пытаешься всё это натянуть на современные реалии.

    Сейчас дефакто композер стандарт, не изобретай велосипед, не стоит заморачиваться на то, что само по себе практически не используется (spl_autoload_register) в проектах.

    1. Возьми композер (у меня под виндой phar работает, если запускать через php), инициализируй его у себя в проекте:
    php ../composer.phar init

    2. Создай в корне директорию в app с именем Test - это будет пространство имен App\Test, туда положи файл Test.php, в котором объяви класс Test с указанием пространства имен namespace App\Test;

    3. В файле composer.json допиши:
    {
    .....
        "autoload": {
            "psr-4": {
                "App\\": ["app/"]
            }
        }
    }

    где app - будет весь код твоего приложения, те твоих чудо-классов.
    Запусти php ../composer.phar dump-autoload

    3. Подключи лишь одну строку: require('./vendor/autoload.php');в файл индекса или в те файлы, где нужны классы с автоподгрузкой.

    4. Должно получиться это:
    5ea45cd48bcdf580929185.jpeg
    Ответ написан
    1 комментарий
  • Автозагрузка обязывает указывать namespace у всех классов?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    С точки стандартов программирования, насколько правильно указывать у каждого класса namespace?

    Других вариантов нет.

    Ведь так можно легко запутаться, да и код начинает содержать символы, которых раньше мог миновать.

    Это какая-то белиберда на которую я даже не знаю, что ответить. Пространства имён служат для того чтобы не путаться. Про символы вообще непонятно

    Какой подход для использования spl_autoload_register из двух перечисленных является более правильным

    Второй
    Ответ написан
    3 комментария