Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (4) 1 [2] 3 4  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Поставьте на путь истинный)
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Да. Отличие сервиса от хэлпера (на мой взгляд опять же) в том, что хэлпер, это часть конкретной бизнес-логики. А сервис, это более общий функционал. Допустим твоя комиссия ну вот нафиг не ужна на сайте, где вообще нет никаких денег. Или на другом сайте она может высчитываться совершенно иначе. А значит этот функционал нужен только тут. Это хэлпер чистейшей воды. Помощник, высчитывающий конкретную комиссию, который можно юзать в разных моделях текущего приложения.

А вот допустим функционал работы с СУБД, это сервис. Так как он не привязан к конкретному сайту, но привязан к какому то драйверу. PDO допустим. И этот сервис можно юзать где угодно, ему плевать, каким образом ты будешь комиссию считать. Ему важно, как бороться с СУБД.

Но это ИМХО, прошу учесть.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ricco381  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 173
Пользователь №: 40351
На форуме: 2 года, 2 месяца, 1 день
Карма: 1




twin
Спасибо!
Еще такой вопрос, куда в yii2 класть helper и от какого класса наследоваться?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Да куда хочеш)) Ты даже можешь назвать их по другому. Вообще логично было бы сделать для хэлперов свой каталог в приложении. Допустим ...\protected\helpers\


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ricco381  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 173
Пользователь №: 40351
На форуме: 2 года, 2 месяца, 1 день
Карма: 1




twin
а класс наследования?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


А наследоваться тоже не обязательно. Можно загружать их как виджеты. Добавить в автолоад что то типа
'application.helpers.*',
и радоваться)


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ricco381  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 173
Пользователь №: 40351
На форуме: 2 года, 2 месяца, 1 день
Карма: 1




twin
а тут можно чуть-чуть поподробнее?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Там в конфиге есть секция для импорта. Туда и нужно дописать. Если нету, пропиши значит:
 'import'=>array(
'application.helpers.*',
),
И тогда все хэлперы будут доступны везде.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ricco381  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 173
Пользователь №: 40351
На форуме: 2 года, 2 месяца, 1 день
Карма: 1




twin
в документации ничего об этом не нашел, но как компонент можно добавить, может так было в yii1?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Ну это не ко мне вопрос. Я не юзаю фреймворков. Может и не так сейчас, тем паче, что там сейчас PSR-4 или композер какой-нибудь.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Santehnick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Абориген
*****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 231
Пользователь №: 26735
На форуме: 5 лет, 8 месяцев, 26 дней
Карма: 15




Ricco381, да так было в yii1, в yii2 этого уже нет.

Ты лучше у Yii сообщества спроси, как лучше сделать http://www.yiiframework.ru/forum/. Никто там не будет советовать хранить это в хелперах, потому что никто не хранит бизнес-логику приложения в хелперах. Хелперы это небольшие вспомогательные функции и не более, их можно спокойно таскать из проекта в проект. Бизнес-логику нужно хранить в моделях.

Если у тебя модель это AR/Base класс, как принято в Yii, то бизнес-логику нужно писать именно туда. Но можно сделать сложнее, бизнес-логику в сервисы, работу с хранилищем в репозитории. Сервисы взаимодействуют с репозиториями. Но так в Yii делают единицы. 99% Yii-программистов всю бизнес-логику пишут в AR/Base моделях, так даже оф. документация советует

Цитата

Models are the central places to represent business data, rules and logic. They often need to be reused in different places. In a well-designed application, models are usually much fatter than controllers.

In summary, models

may contain attributes to represent business data;
may contain validation rules to ensure the data validity and integrity;
may contain methods implementing business logic;
should NOT directly access request, session, or any other environmental data. These data should be injected by controllers into models;
should avoid embedding HTML or other presentational code - this is better done in views;
avoid having too many scenarios in a single model.
http://www.yiiframework.com/doc-2.0/guide-...#best-practices


Цитата

так как это может использовать в разных местах
They often need to be reused in different places


Цитата

значит нужно сделать для этого отдельный метод, а может быть и класс
may contain methods implementing business logic;


В общем я бы создал AR модель для комиссии раз она в базе хранится и всю бизнес логику связанную с комиссией положил бы в неё. Затем эту модель использовал бы в других моделях или контроллерах, где это требуется.

А сервисы/репозитории/сущности и всё остальное оставил бы на будущее, когда начнешь фанатеть от DDD.
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (Santehnick @ 25.05.2016 - 14:49)
Хелперы это небольшие вспомогательные функции и не более, их можно спокойно таскать из проекта в проект.

Ну как бы ему это и надо было, как я понял:
Цитата (Ricco381 @ 24.05.2016 - 23:38)
так как это может использовать в разных местах значит нужно сделать для этого отдельный метод, а может быть и класс

Или как, если класс юзает AR, то это уже не может быть хэлпером, даже если там всего один маленький метод расчета этой преславутой комиссии? На каждый чих модель сочинять...

Хотя пофиг. Хоть горшком назови, сути это не меняет.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1042
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 25 дней
Карма: 13




Цитата (twin @ 25.05.2016 - 12:51)
Если будешь писать для всех, это не кодинг получится, а проституция.

Нужно делать код с тем условием, что его будет читать кто-то другой. Потому что этот другой - ты сам через определенное время. И чтобы не было мучительно больно и стыдно; и чтобы не испытывать на себе эффект пустой лодки - нужно придерживаться общепринятых норм и правил. Они не просто так появляются, в них огромный практический опыт.

Я уже прихожу к выводу что нужно использовать 5 уровней абстракции.

Ну вот, в итоге свалились на Yii с их гнидным AR. Печаль и скука.


--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sg.com  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Пользователь
Сообщений: 121
Пользователь №: 42899
На форуме: 7 месяцев, 5 дней
Карма: 3




Цитата (Ron @ 25.05.2016 - 21:23)
нужно придерживаться общепринятых норм и правил. Они не просто так появляются, в них огромный практический опыт.

в этом месте и происходят расхождения. Для "правшей" очевидно, что светлое окно должно быть слева, а вот для "левшей" оно вопреки их логике находится все там же слева ) - это для учебных классов. А вот дома каждый устраивает себя по отношению к окну как захочет.

делаю ставку:
Цитата (FatCat @ 25.05.2016 - 09:25)
Мне пофигу кто как оценит мой код. Пишу так, чтобы по возможности было ресурсоемко и удобно мне.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователь сейчас на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 2 месяца
Карма: 299

Трезвый :
5 лет, 11 месяцев, 10 дней


Цитата (Ron @ 25.05.2016 - 17:23)
Нужно делать код с тем условием, что его будет читать кто-то другой. Потому что этот другой - ты сам через определенное время.
Ну так я об этом и написал:
Цитата (twin @ 25.05.2016 - 08:51)
На самом деле нужно писать так, как удобно тебе. Но с таким условием, чтобы ты сам через пару месяцев смог спокойно прочитать свой код.

А что касается общепринятой практики, так в том и дело, что нет такой. Кто во что горазд. И каждый считает, что его практика как раз "общепринята".
Для меня очевидно и логично, что "моделировать" нужно более глобальный функционал, а такие мелочи, которые требуются в разных частях системы (моделях), удобнее располагать в хэлперах. Но Santehnick утверждает, что YII сообщество посчитает это говнокодом, ибо
Цитата (Santehnick @ 25.05.2016 - 14:49)
99% Yii-программистов всю бизнес-логику пишут в AR/Base моделях

Или про твои 5 уровней абстракций. По мне, так это пахнет оверинженирингом. Но тебе так удобно, а значит ты считаешь это общепринятостью.

Код должен быть прозрачен и удобен. И если он попадает в паттерны, то хорошо. Но никак не наоборот. Иногда невпопад используемые паттерны только ухудшают дело. Ты вот сам на AR обиделся, а тот же Santehnick скажет, что это общепринятая практика. Ибо вдруг(!) придется менять коней на переправе СУБД. Или миграции те же...

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


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Ron  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1042
Пользователь №: 41686
На форуме: 1 год, 3 месяца, 25 дней
Карма: 13




Цитата (twin @ 26.05.2016 - 03:26)
Или про твои 5 уровней абстракций. По мне, так это пахнет оверинженирингом. Но тебе так удобно, а значит ты считаешь это общепринятостью.

Я? ) Похожей точки зрения придерживается сообщество Symfony. Пять слоев необходимость, без этого код будет скорее всего излишне связан.

Цитата (twin @ 26.05.2016 - 03:26)
Ты вот сам на AR обиделся

Просто не считаю нужным создавать абстракцию в том месте, где она уже создана.

Цитата (twin @ 26.05.2016 - 03:26)
Жить нужно так, чтобы твоим именем назвали синдром. biggrin.gif

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

Цитата (twin @ 26.05.2016 - 03:26)
а тот же Santehnick скажет, что это общепринятая практика.

И хорошо, сразу же видно кто "свой/чужой". )) Некоторые технологии позволяют отсеять соискателей еще до собеседования. Удобно! ))










--------------------
Жду 5.11.2017
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (4) 1 [2] 3 4  Ответ в темуСоздание новой темыСоздание опроса