
Дмитрий
09.10.2018
20:13:15
а свои неймспейсы можно любые писать
вот напримрер
JLoader::registerNamespace('Mpdf', DIR . '/libs/mpdf');
единсвтенное ущербный только загрузчик у джумлы сейчас

Google

Robert
09.10.2018
20:16:12
вам сложно писать неймспейсы?
Да нет, не namespaces, а aliases. На фиг нужно каждый раз писать
use \Joomla\blahblahblah\blahblahblah;
use \Joomla\blahblahblah\blahblahblah;
use \Joomla\blahblahblah\blahblahblah;

Дмитрий
09.10.2018
20:16:36
не совсем понятно
ну вы можете алиасы создавать свои
https://api.joomla.org/cms-3/classes/JLoader.html#method_registerAlias
мне лично пофиг на такое, шторм сам делает все

Robert
09.10.2018
20:18:49

Дмитрий
09.10.2018
20:19:02

Robert
09.10.2018
20:19:07
Да

Дмитрий
09.10.2018
20:19:15
поддержка джумлы включена?
просто ALt+Enter
и он ставит неймспейсы

Robert
09.10.2018
20:19:37
Вроде да. Не все, правда, видит.

Google

Дмитрий
09.10.2018
20:19:43
курсор на классе и эта комбинация

Robert
09.10.2018
20:19:55
Но я уже сделал такую фигню
spl_autoload_register(
function ($alias) use ($classes) {
if (isset($classes[$alias]) && class_exists($classes[$alias], true))
{
class_alias($classes[$alias], $alias);
}
}
);
Пусть пашет.

Дмитрий
09.10.2018
20:24:13
у джумлы есть
скинул выше
там тоже самое

Robert
09.10.2018
20:28:15
Но у меня свои алиасы, точнее, без префикса J. Так что пусть будет.

Дмитрий
09.10.2018
20:29:11
где он тут алиасы добавляет?
точней префикс
туплю уже :)
он просто делает алиасу загруженному классу

Robert
09.10.2018
20:30:06
Я понял тебя.
Просто изначально не хотел вызывать JLoader.

Дмитрий
09.10.2018
20:30:48
у вас не правильно, вы вмещиваетесь в работу лоадера

Robert
09.10.2018
20:30:53
Думал, что его не будет в 4-версии.

Дмитрий
09.10.2018
20:31:16
вот такой хак, который вы добавили, нельзя так делать
если вы пишите на фреймворке

Google

Дмитрий
09.10.2018
20:31:30
:)

Robert
09.10.2018
20:31:31

Дмитрий
09.10.2018
20:31:54
не нарушайте стандарты и не вмешивайтесь в работу системы :))
это потом вернется где - нибудь

Robert
09.10.2018
20:32:54
А я их не нарушаю. У меня будет свой namespace, внутри которого буду делать, что хочу.

Дмитрий
09.10.2018
20:33:15
и загрузить его в джумлу
без таких хаков

Robert
09.10.2018
20:33:48

Дмитрий
09.10.2018
20:34:22
ну вот так
а далее вы можете сделать свой маппер, для алиасов

Robert
09.10.2018
20:35:33
Для J!3?

Дмитрий
09.10.2018
20:35:42
ну да
вот это 3.8.х у меня сейчас

Robert
09.10.2018
20:37:30
IMHO, не выйдет - BaseController::createView(), например, не поймет.

Дмитрий
09.10.2018
20:38:06
вот так примерно
не понимаю вас

Google

Robert
09.10.2018
20:39:12
// Clean the view name
$viewName = preg_replace('/[^A-Z0-9_]/i', '', $name);
$classPrefix = preg_replace('/[^A-Z0-9_]/i', '', $prefix);
$viewType = preg_replace('/[^A-Z0-9_]/i', '', $type);
// Build the view class name
$viewClass = $classPrefix . $viewName;
Clean the view name
cleans нахрен все namespaces.

Дмитрий
09.10.2018
20:40:37
не понимаю :)
это просто куски кода, которые форматирубт
где тут загрузка и все такое :)

Robert
09.10.2018
20:41:31
У тебя, например, такое view - Blah\Blah\BlahView.
После очистки оно стало BlahBlahBlahView.
И хрен система найдет его.

Дмитрий
09.10.2018
20:42:47
а зачем очищать?
нафиг?

Robert
09.10.2018
20:43:29
Не знаю. Это код BaseController::createView().
Открой и посмотри.
В 4-версии уже по-другому.
Там "\" уже не вырезается.

Дмитрий
09.10.2018
20:46:09
просто если кидать с неймспейсом, то да, чистится
что бред
:)
там получается что надо $this->paths['view']

Google

Robert
09.10.2018
20:47:13
То есть, в J!3 я не могу делать своему компонету свой namespace.

Дмитрий
09.10.2018
20:47:13
поменять на неймспйс
можете
но только через бредовый немного шаг
сменить сначала $this->paths['view']
метод
и сделать неймспейс
убрать эту очистку
я бы метод переопределил

Robert
09.10.2018
20:48:40
Не хочу я каждый раз переопределять.

Дмитрий
09.10.2018
20:49:07
эм

Robert
09.10.2018
20:49:11
Просто как костыль.

Дмитрий
09.10.2018
20:49:13
а вы как вызываете?
$this->createView
там это не статичный метод, и он у потомков переопределяется

Robert
09.10.2018
20:49:43
creatView я не вызываю
Вызывается дефольтный display()

Дмитрий
09.10.2018
20:50:11
вы у своего контроллера, где наследуете переопределяете createView

Robert
09.10.2018
20:51:08