Почему битрикс должен видеть мой класс и где он должен находиться?
Есть несколько способов чтобы "Битрикс" (а на самом деле php) видел ваш класс:
1. Ванильный php: класс должен быть подключен к выполнению явно через подключение файла в которым он описан
2. Вандальный/Коробочный Б24: Класс должен располагаться где-угодно, но быть заргистрирован через автолоадер (здесь не важно что вы используете: composer, битриксовый или свое на базе spl_autoloader) в init.php
3. Через модули.
Если мы говорим о классическом bitrix framework то правильнее делать модуль.
Причем в модуле есть 2 варианта его инициализации:
1. Через "автолоадер" или прямое подключение в include.php ()
2. Через `psr`-подобный загрузчик в папке lib (
https://dev.1c-bitrix.ru/learning/course/index.php...)
Иначе говоря:
- Либо вы размещаете где хотите и подключаете его сами
- Либо если вы работаете с модулем то положить его по psr4 в папочку `lib` вашего модуля.
Как работает автозагрузчик?
Если вы читали абзац выше, то поняли, что единого центразиованного загрузчика тут нет.
Есть:
1. Глобальный автозагрузчик из модулей (который загружает по psr4 из активных подключенных модулей)
2. Локальный автозагрузчик модуля (для подключенного модуля)
3. Кастомные загрузчики (тут кто во что горазд).
Соответственно, если мы говорим про 1 и 2 типы загрузчиков, что сначала необходимо подключить модуль (`\CModule::IncludeModule` или `\Bitrix\Main\Loader`), а потом уже вызывать классы.
Если вы попытаетесь вызывать классы, а до вас никто не подключил модуль, то вы получите фатал.
Везде ли он работает?
Последний абзац выше показывает что нет.
Есть ли проблемы с версиями? Отличия ядер битрикса или ещё какой черной магии?
Описания в зависимости от версии особо нет.
Что касается проблем, то примерно до версии 18 psr-подобного загрузчика не было, потом он начал появляться и совершенствоваться.
Если ориентироваться на последнюю версию Битрикс24, то проблемы если и есть, то только локального характера связанные с модульной структурой.
Здесь могу посоветовать только проштудировать документацию и потыкаться самому. Универсальной формулы нет - документация тут скудная.
Как настроить defaultNamespace и namespaces в .settings.php, чтобы всё заработало?
Здесь нужно намного больше информации, например: как модуль используете, что сделали, что ожидаете и что работает не так как ожидали.
Пока могу лишь ограничиться ответом "настроить согласно документации" (ха-ха, злая шутка, особо документации нет - нужно больше вводных данных см выше)
Есть ли где-то полностью рабочий пример реализации своего класса, с описанием того где файлы и почему они там?
Нет, такого нет.
В Битриксе это можно получить только после изучения всех курсов/доков/экзаменов и с точки зрения практического опыта.
Можно посмотреть уже готовые модули (что-то подобное можно найти на github, например
https://github.com/alex-nzr/bitrix-example-boilerp... или
https://github.com/zahalski/awz.ydelivery/tree/mas...)/
Можно посмотреть как это делать без модулей
https://bx24devbook.website.yandexcloud.net/index.html (тут скорее больше описания чем конкретные классы).
Готового гайда как у симфони здесь увы нет.
Какая именно должна быть ссылка для проверки роута?
Что вы имеете ввиду? Проверки чем? Ссылка на что? Какого роута?