Автозагрузка классов в Yii 2.X как в Yii 1.X

Обсуждение документации второй версии фреймворка. Переводы Cookbook и авторские рецепты.
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение denis909 »

zelenin писал(а): 2017.02.05, 14:44 для какой цели используется ваше расширение при установке плагина, если плагин может сам себе загрузить с помощью 5 строк? зачем здесь вообще программист, если плагин можно установить из админки? Неужели в какой-то cms вы видели, что для установки плагина надо еще копаться в коде для автозагрузки классов?
Такое ощущение что мы с вами на разных языках разговариваем через переводчик с/на китайский. Вы постоянно обвиняете меня в каких то вещях которые придумваете сами. Да, я не видел ни в какой CMS чтобы для установки плагина надо копатья в каком-бы то ни было коде. В том числе и в моей системе не приходится этого делать. Выше я расписал конкретные действия которые надо сделать чтобы установить модуль в систему, и ковыряние в автозагрузке среди них не было. Вы в этом же предложении пишете что все через админку, а потому про какие-то конфиги. Потрудитесь объяснить, к чему вы вообще это пишете? Кто и когда должен копаться в коде автозагрузки? Что такое для вас код автозагрузки?
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение denis909 »

zelenin писал(а): 2017.02.05, 14:44 для какой цели используется ваше расширение при установке плагина, если плагин может сам себе загрузить с помощью 5 строк? зачем здесь вообще программист, если плагин можно установить из админки? Неужели в какой-то cms вы видели, что для установки плагина надо еще копаться в коде для автозагрузки классов?
Черным по белому пишу что расшиерние для автозагрузки классов, а вы меня спрашиваете как оно поможет при установке плагина...
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение zelenin »

denis909 писал(а): 2017.02.05, 14:51
zelenin писал(а): 2017.02.05, 14:44 для какой цели используется ваше расширение при установке плагина, если плагин может сам себе загрузить с помощью 5 строк? зачем здесь вообще программист, если плагин можно установить из админки? Неужели в какой-то cms вы видели, что для установки плагина надо еще копаться в коде для автозагрузки классов?
Такое ощущение что мы с вами на разных языках разговариваем через переводчик с/на китайский. Вы постоянно обвиняете
не надо защищаться. Я написал ранее, что хочу понять о чем тут вообще, поэтому задаю наводящие вопросы.
denis909 писал(а): 2017.02.05, 14:51Выше я расписал конкретные действия которые надо сделать чтобы установить модуль в систему, и ковыряние в автозагрузке среди них не было. Вы в этом же предложении пишете что все через админку, а потому про какие-то конфиги.
viewtopic.php?f=28&t=35027&start=80#p209815
тут вы написали что плагины устанавливаются из админки. На какой стадии тут участвует ваше расширение и зачем оно вообще нужно в контексте данного кейса?
denis909 писал(а): 2017.02.05, 14:51Потрудитесь объяснить, к чему вы вообще это пишете? Кто и когда должен копаться в коде автозагрузки? Что такое для вас код автозагрузки?
когда вы вызываете какой-то класс, этот класс должен быть в поле видимости проекта - либо заинклужен напрямую либо заинклужен через функцию автозагрузки (spl_autoload)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение zelenin »

denis909 писал(а): 2017.02.05, 14:56
zelenin писал(а): 2017.02.05, 14:44 для какой цели используется ваше расширение при установке плагина, если плагин может сам себе загрузить с помощью 5 строк? зачем здесь вообще программист, если плагин можно установить из админки? Неужели в какой-то cms вы видели, что для установки плагина надо еще копаться в коде для автозагрузки классов?
Черным по белому пишу что расшиерние для автозагрузки классов, а вы меня спрашиваете как оно поможет при установке плагина...
плагин сам себя может и должен - он же плагин - автозагрузить. зачем тут отдельное расширение?
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение denis909 »

Нам тут больше не в чем разбираться. Вы сказали что для каждого плагина где есть классы без НС вы бы сделали свою функцию spl_autoload. В итоге в проекте с данным кейсом, у вас было бы подклюено несколько десятков spl_autoload функций. Я же для решения данной задачи предлгаю воспользоваться одним spl_autoload автозагрузчиком, который подключен в приложении, и в который плагины динамически добавляют свои пути в процессе инициализации плагина. Я предожил свое решение, вы своё.

У меня нет для вас другого ответа, зачем нужно отдельное расширение, если для вас десяток spl_autoload функций это норма .
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение zelenin »

Принято.

Резюме: расширение нужно для того, чтобы вынести автозагрузку плагинов из плагинов в сторонее расширение. Таким образом клиент плагина должен предварительно установить загрузчик классов плагина и сконфигурировать его, как, если бы вы ваш плагин для вордпресса требовал предустановить еще один плагин для своей работы. Объясняется это минимизацией кол-ва зарегистрированных в системе автозагрузчиков (тестов конечно ТС не делал).

Мое мнение: с таким дизайном системы я не согласен - это оверхед для моего user experience как клиента плагина, не дающий видимого прироста производительности.

Дело закрыто.
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение Loveorigami »

Как я понял (и понял ли?)
- Есть в проекте одна папка "Modules" с модулями от ПС и без NS.
- Это расширение сканирует ее и добавляет классы а глобальное пространство.
- Создается новый модуль, ставится из админки, распаковывается в эту папку "Modules" и вроде как работает.
- Но так и не остался прояснен вопрос. Делаем n+1 модуль для новой ПС. Она дала вам библиотеку, в которой есть класс Payment. Этот же класс присутствует в другом модуле. Как тогда?
Мне вы рекомендовали называть по другому. Но сами же писали, что библиотеки Вы править не можете и тп...
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение denis909 »

zelenin писал(а): 2017.02.05, 15:25 Резюме: расширение нужно для того, чтобы вынести автозагрузку плагинов из плагинов в сторонее расширение.
Я думаю, что рассмотрения одного кейса недостаточно, чтобы делать выводы о том для чего необходимо расширение в целом. Это был конкретный пример использования, один из множества. Давайте остановимся на том, что расширение для автозагрузки классов в глобальном пространстве имен, необходимо для того чтобы загружать классы в глобальном пространсте имен. Все остальное - это примеры использования, которые были использованы в нашем диалоге, но не имеют прямого отношения к описанию расширения в целом. Это просто SPL автозагрузчик классов из Yii 1, и не более.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение zelenin »

denis909 писал(а): 2017.02.05, 15:44для того чтобы загружать классы в глобальном пространсте имен
для этого есть composer, как универсальный загрузчик. второй загрузчик не нужен в системе. Во времена yii1 композера не было.
Последний раз редактировалось zelenin 2017.02.05, 15:51, всего редактировалось 1 раз.
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение denis909 »

Loveorigami писал(а): 2017.02.05, 15:33 Как я понял (и понял ли?)
- Есть в проекте одна папка "Modules" с модулями от ПС и без NS.
- Это расширение сканирует ее и добавляет классы а глобальное пространство.
- Создается новый модуль, ставится из админки, распаковывается в эту папку "Modules" и вроде как работает.
- Но так и не остался прояснен вопрос. Делаем n+1 модуль для новой ПС. Она дала вам библиотеку, в которой есть класс Payment. Этот же класс присутствует в другом модуле. Как тогда?
Мне вы рекомендовали называть по другому. Но сами же писали, что библиотеки Вы править не можете и тп...
Я вам не рекомендовал называть по другому. Вы меня спросили как бы назывались классы, если бы были бы без NS. Я вам ответил на этот вопрос. Потом я неоднократно писал что не призываю писать бездумно все классы без NS. В конеретном примере мы рассмотрели случай, что библиотеки из стороних источников и нужно минимизировать их доработки. В случае наличия класов в разных ПС с одним названием, то в одной из систем придется что-то переименовывать, или выносить в неймспейсы, это же очевидно. Если теоретическая возможность возникновения такого случая для вас является поводом чтобы без повода лопатить сотни чужих классов, а потом при каждом их обновлении лопатить их снова, флаг вам в руки. Я же поменяю вызвоы только одного конфликтного класса, но ваше право делать иначе, если конечно ваши заказчики готовы это финансировать.
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение denis909 »

zelenin писал(а): 2017.02.05, 15:50
denis909 писал(а): 2017.02.05, 15:44для того чтобы загружать классы в глобальном пространсте имен
для этого есть composer, как универсальный загрузчик. второй загрузчик не нужен в системе. Во времена yii1 композера не было.
Только что вы писали, что решили бы вопрос автозагрузки через SLP автозагрузчик, а теперь пишете опять про Сomposer. Про Composer уже все обсудили выше, вам есть что добавить по делу?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение zelenin »

denis909 писал(а): 2017.02.05, 15:54
zelenin писал(а): 2017.02.05, 15:50
denis909 писал(а): 2017.02.05, 15:44для того чтобы загружать классы в глобальном пространсте имен
для этого есть composer, как универсальный загрузчик. второй загрузчик не нужен в системе. Во времена yii1 композера не было.
Только что вы писали, что решили бы вопрос автозагрузки через SLP автозагрузчик, а теперь пишете опять про Сomposer. Про Composer уже все обсудили выше, вам есть что добавить по делу?
вы избирательно трактуете мои слова.
я же пишу: применение вижу только для плагинов. - но есть еще кейсы, кроме плагинов - отвечаете вы. - для других кейсов есть композер. - но вы же про плагины говорили про spl_autoload, а теперь опять про композер?

Вот такая вот у вас дискуссия - возвращаться к обсужденным вещам, безоносительно контекста.
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение denis909 »

zelenin писал(а): 2017.02.05, 16:00 для других кейсов есть композер.
Теперь я понял вас. Вы мне изначально говорили что кейсов нет вообще, я привел вам один. Теперь вы говорите что пусть один есть, но других нет. Я не буду даже пытаться привести другие кейсы. Если есть один, то может быть и второй, а там где второй, там третий... Может быть, когда-нибудь, кто-то, кому расширение окажется полезным, и напишет нам свои кейсы сюда, как ему помогло расширение...

Хотя стоит заметить что найти их будет непросто, в остальном сам Composer использую для другого, но при этом достаточно часто сталкиваюсь с классами без неймспейсов которые надо подключить в проект из модуля (плагина).
Последний раз редактировалось denis909 2017.02.05, 16:11, всего редактировалось 1 раз.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение zelenin »

denis909 писал(а): 2017.02.05, 16:06
zelenin писал(а): 2017.02.05, 16:00 для других кейсов есть композер.
Теперь я понял вас. Вы мне изначально говорили что кейсов нет вообще, я привел вам один. Теперь вы говорите что пусть один есть, но других нет. Я не буду даже пытаться привести другие кейсы. Если есть один, то может быть и второй, а там где второй, там третий... Может быть когда-нибудь кто-то кому расширение окажется полезным, и он напишет нам свои кейсы, как ему помогло расширение.
конечно же вы не правы. есть кейс когда вы, программист, устанавливаете либу, и мы с самого начала разговаривали в контексте этого кейса, ведь расширение ваше надо ставить программисту, и есть кейс, установки кода из админки, который никто не принимал в расчет, пока вы не указали на него. Других кейсов быть не может.
то есть один кейс подразумевает доступ к коду, второй кейс не подразумевает. Все рассуждения в этой ветке шли в рамках первого кейса страницы до 4-й, т.к. установка вашего же расширения тоже происходит в рамках этого кейса.
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение denis909 »

zelenin писал(а): 2017.02.05, 16:09 Других кейсов быть не может.
Если бы вы были внимательны, то заметили, что даже в этой ветке есть другой кейс. Когда доступ к коду есть, но нету доступа к командной строке. Вы постоянно делаете громкие заявления, ни на чем не основанные. Пытаетесь свою точку зрения навязать как истину. Написали бы проще - "я не могу придумать других кейсов, поэтому считаю что их не может быть".
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение zelenin »

denis909 писал(а): 2017.02.05, 16:16
zelenin писал(а): 2017.02.05, 16:09 Других кейсов быть не может.
Если бы вы были внимательны, то заметили, что даже в этой ветке есть другой кейс. Когда доступ к коду есть, но нету доступа к командной строке.
домашнее задание вам: придумать как можно работать с композером "без командной строки на сервере".
denis909 писал(а): 2017.02.05, 16:16Вы постоянно делаете громкие заявления, ни на чем не основанные
смешно.
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение denis909 »

zelenin писал(а): 2017.02.05, 16:23
denis909 писал(а): 2017.02.05, 16:16
zelenin писал(а): 2017.02.05, 16:09 Других кейсов быть не может.
Если бы вы были внимательны, то заметили, что даже в этой ветке есть другой кейс. Когда доступ к коду есть, но нету доступа к командной строке.
домашнее задание вам: придумать как можно работать с композером "без командной строки на сервере".
denis909 писал(а): 2017.02.05, 16:16Вы постоянно делаете громкие заявления, ни на чем не основанные
смешно.
Ситуация с командной строкой таже что с плагинами. Конечные пользователи системы не обязаны иметь командную строку. Закачали по FTP скрипты и используют.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение zelenin »

именно. если нет доступа к командной строке, то в проекте нет и композера. мы же обсуждали это? или пятый раз начнем обсуждение?
либо же композер есть, но используется он на дев-машинке, а результаты его выполнения заливаются по ftp.
вы любите циклиться, преподнося якобы в новом свете старые темы, за которым идут те же аргументы, что были и в первый раз.
Аватара пользователя
denis909
Сообщения: 103
Зарегистрирован: 2009.04.02, 16:04
Откуда: Санкт-Петербург
Контактная информация:

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение denis909 »

zelenin писал(а): 2017.02.05, 18:20 именно. если нет доступа к командной строке, то в проекте нет и композера. мы же обсуждали это? или пятый раз начнем обсуждение?
Отсутствие композера в проекте я отказался с вами обсуждать сразу, и не обсуждал.
zelenin писал(а): 2017.02.05, 18:20 либо же композер есть, но используется он на дев-машинке, а результаты его выполнения заливаются по ftp.
Теперь, когда вы это поняли, что такой вариант возможен, второй кейс мы тоже можем считать закрытым.
zelenin писал(а): 2017.02.05, 18:20 вы любите циклиться, преподнося якобы в новом свете старые темы, за которым идут те же аргументы, что были и в первый раз.
Вы напрочь не понимали то что я пишу вам с первого раза, и мне приходилось тот же аргумент писать другими словами, чтобы вы его поняли, а за какими-то новыми темами, вам в другой топик.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Автозагрузка классов в Yii 2.X как в Yii 1.X

Сообщение zelenin »

denis909 писал(а): 2017.02.05, 21:19
zelenin писал(а): 2017.02.05, 18:20 именно. если нет доступа к командной строке, то в проекте нет и композера. мы же обсуждали это? или пятый раз начнем обсуждение?
Отсутствие композера в проекте я отказался с вами обсуждать сразу, и не обсуждал.
zelenin писал(а): 2017.02.05, 18:20 либо же композер есть, но используется он на дев-машинке, а результаты его выполнения заливаются по ftp.
Теперь, когда вы это поняли, что такой вариант возможен, второй кейс мы тоже можем считать закрытым.
ну так проблемы и нет. Если командной строки нет на сервере, командная строка есть на деве - значит композер есть. остаются те же варианты - а) либа и композер, б) плагин и автозагрузчик.
denis909 писал(а): 2017.02.05, 21:19
zelenin писал(а): 2017.02.05, 18:20 вы любите циклиться, преподнося якобы в новом свете старые темы, за которым идут те же аргументы, что были и в первый раз.
Вы напрочь не понимали то что я пишу вам с первого раза, и мне приходилось тот же аргумент писать другими словами, чтобы вы его поняли, а за какими-то новыми темами, вам в другой топик.
да нет, вы одно и то же повторяете по нескольку раз, получая от меня одинаковый фидбек. Можете еще раз прочесть мое резюме темы и удостовериться, что с его момента ничего не изменилось - как было два кейса так два кейса и осталось.
Ответить