Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Нет.
Я уже пытался когда-то давно. Но движок мне не понравился с технической точки. Под него писать можно, но сложно и геморройно. Он не даёт нормальную возможность "писать под него", делая всё через магические несуществующие классы __HOOK__ и прочие, которые рисуются прямо в рантайме.
Приличия ради, могли бы с включенным development-режимом генерировать PHP-файлы, дающие понять IDE, что это за нахер __HOOK__, и что он из себя представляет, но нет.
Ну под ips есть вполне адекватная документация, где все ясно расписано, а если ещё лучше погуглить, то можно найти, как устроена архитектура, для расширения возможностей ядра
Ну под ips есть вполне адекватная документация, где все ясно расписано, а если ещё лучше погуглить, то можно найти, как устроена архитектура, для расширения возможностей ядра
А я разве сказал, что её нет?
В то время, когда XF максимально старается помогать конечному разработчику, генерируя классы-пустышки и выводя прямо в админке описание обработчика события, IPS заставляет постоянно бегать в документацию.
Вот так выглядит файл с классами-пустышками для одного из моих аддонов (я его руками не пишу, его генерирует сам движок):
src/addons/.../_output/extension_hint.php:
<?php
// ################## THIS IS A GENERATED FILE ##################
// DO NOT EDIT DIRECTLY. EDIT THE CLASS EXTENSIONS IN THE CONTROL PANEL.
namespace SModders\MultilanguageNode\XFMG\Entity
{
class XFCP_Category extends \XFMG\Entity\Category {}
}
namespace SModders\MultilanguageNode\XFRM\Entity
{
class XFCP_Category extends \XFRM\Entity\Category {}
}
namespace SModders\MultilanguageNode\XF\Entity
{
class XFCP_Node extends \XF\Entity\Node {}
}
И моя IDE, находя его, вполне адекватно начинает подсказывать по этому неизвестному для неё классу.
А ещё у IPS меня честно бесит структура проекта. И их автозагрузчик.
У XF всё логично и просто (как класс назовёшь - туда и ложишь). Под капотом Composer. Если необходимо заюзать свои внешние либы - просто указываешь в addon.json путь к папке композеровских либ относительно своей папки аддона, и движок уже при старте всё загрузит.
Тут нужно раскладывать файлы по своим папкам (extensions, hooks, interface и так далее; в зависимости от типа класса), которые неявно уже в рантайме подгрузятся. Костыльным загрузчиком, функционал которого в разы меньше, чем у того же Композера (который на тот момент уже существовал, потому чем вызвано такое решение "навелосипедить свой загрузчик" - непонятно).
А я разве сказал, что её нет?
В то время, когда XF максимально старается помогать конечному разработчику, генерируя классы-пустышки и выводя прямо в админке описание обработчика события, IPS заставляет постоянно бегать в документацию.
Вот так выглядит файл с классами-пустышками для одного из моих аддонов (я его руками не пишу, его генерирует сам движок):
src/addons/.../_output/extension_hint.php:
<?php
// ################## THIS IS A GENERATED FILE ##################
// DO NOT EDIT DIRECTLY. EDIT THE CLASS EXTENSIONS IN THE CONTROL PANEL.
namespace SModders\MultilanguageNode\XFMG\Entity
{
class XFCP_Category extends \XFMG\Entity\Category {}
}
namespace SModders\MultilanguageNode\XFRM\Entity
{
class XFCP_Category extends \XFRM\Entity\Category {}
}
namespace SModders\MultilanguageNode\XF\Entity
{
class XFCP_Node extends \XF\Entity\Node {}
}
А ещё у IPS меня честно бесит структура проекта. И их автозагрузчик.
У XF всё логично и просто (как класс назовёшь - туда и ложишь). Под капотом Composer. Если необходимо заюзать свои внешние либы - просто указываешь в addon.json путь к папке композеровских либ относительно своей папки аддона, и движок уже при старте всё загрузит.
Тут нужно раскладывать файлы по своим папкам (extensions, hooks, interface и так далее; в зависимости от типа класса), которые неявно уже в рантайме подгрузятся. Костыльным загрузчиком, функционал которого в разы меньше, чем у того же Композера (который на тот момент уже существовал, потому чем вызвано такое решение "навелосипедить свой загрузчик" - непонятно).
Не умеет в интеллисенс классов с других файлов.
Когда Шторм хотя бы видит, откуда наследуется текущий файл и какие методы у него есть, VSCode просто нихера не может подсказать.