Виджет, main.php или как не нужно делать?!

Обсуждаем, как правильно строить приложения
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Виджет, main.php или как не нужно делать?!

Сообщение zelenin »

ksetrin писал(а):А иначе зачем столько распинался zelenin, доказывал свою точку зрения.
в споре рождается истина. напишет ли автор сервис или нет, не суть важно. главное что в эту ветку зайдет пара сотен разработчиков, прочтут и сделают выводы.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Виджет, main.php или как не нужно делать?!

Сообщение zelenin »

ksetrin писал(а):И нисколько моя ирония не напрасна. Ибо rugabarbo оказался ПО ФАКТУ прав, говоря, что советовать новичкам сложный паттерн SL не стоит, ибо не до него.
по факту - это когда перед нами какой-то факт, который доказывает тезис. факта нет.
а мой тезис, что обернуть что-то в сервис из трех строк, не является сложным даже для новичка.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Виджет, main.php или как не нужно делать?!

Сообщение zelenin »

DeaTh писал(а):Господа, вот заинтересовали SL. Есть ли у вас примеры, где можно посмотреть реализацию с yii? Может проект какой на гитхабе или еще что.
в начале темы я собственно написал пример экшна. сервис просто оборачивает то, что из экшна исчезло. И реализация на yii или чем-то еще отличаться не будет.

без сервиса:

Код: Выделить всё

public function actionCreateUser()
{
    $userData = Yii::$app()->getRequest()->getPost('user');
    
    $user = new User();
    $user->setAttributes($userData);
    $user->save();
}

 
с сервисом:

Код: Выделить всё

public function actionCreateUser()
{
    $userData = Yii::$app()->getRequest()->getPost('user');
    (new UserService())->register($userdata);
}

class UserService
{
    pulic function register(array $userData)
    {
        $user = new User();
        $user->setAttributes($userData);
        $user->save();
    }
}
 
самый банальный пример. Это сложно?
Последний раз редактировалось zelenin 2015.12.21, 12:46, всего редактировалось 1 раз.
Аватара пользователя
ksetrin
Сообщения: 81
Зарегистрирован: 2015.03.06, 10:00
Контактная информация:

Re: Виджет, main.php или как не нужно делать?!

Сообщение ksetrin »

Вот поэтому я не спорю с Александром. Потому, что даже факты он отрицает.
Вы дали совет человеку, использовать сервисы, дали пример кода, он написал
Trampampam писал(а):
zelenin писал(а):пример:

Код: Выделить всё

public function actionCategory()
{
$dbContentFetcher = new DbContentFetcher;

$popular = $dbContentFetcher->getPopular(79, 5);
$news = $dbContentFetcher->getNews(79, 5);

return $this->render('category', ['popular' => $popular,'news'=>$news]);
}
это позволит сократить код в экшне (тонкий контроллер), вынести прямые запросы в БД в отдельный класс (S в слове SOLID), поднимет ваш опыт в глазах других (К в слове КРУТОЙ).

Статические и магические методы - зло, и их надо избегать.
Спасибо за пример. То, что доктор прописал.
Но потом что-то поло не так... и...
Trampampam писал(а):
ksetrin писал(а):Trampampam заодно покажите как вы реализовали сервисный слой, уж очень хочется увидить, что труды zelenin были не напрасны и сделали все правильно
Я его не реализовывал. Но, благодаря совету zelenin, я знаю, что так можно и это вполне себе путь Джедая. В любом варианте, его труды не напрасны и ваша ирония неуместна.
Ладно, ждем другую пару сотен, кто покажет свои примеры реализаций сервисов для 5 самых популярных и 5 самых новых статей
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Виджет, main.php или как не нужно делать?!

Сообщение zelenin »

ksetrin писал(а):Вот поэтому я не спорю с Александром. Потому, что даже факты он отрицает.
Вы дали совет человеку, использовать сервисы, дали пример кода, он написал
Trampampam писал(а):
zelenin писал(а):пример:

Код: Выделить всё

public function actionCategory()
{
$dbContentFetcher = new DbContentFetcher;

$popular = $dbContentFetcher->getPopular(79, 5);
$news = $dbContentFetcher->getNews(79, 5);

return $this->render('category', ['popular' => $popular,'news'=>$news]);
}
это позволит сократить код в экшне (тонкий контроллер), вынести прямые запросы в БД в отдельный класс (S в слове SOLID), поднимет ваш опыт в глазах других (К в слове КРУТОЙ).

Статические и магические методы - зло, и их надо избегать.
Спасибо за пример. То, что доктор прописал.
Но потом что-то поло не так... и...
Trampampam писал(а):
ksetrin писал(а):Trampampam заодно покажите как вы реализовали сервисный слой, уж очень хочется увидить, что труды zelenin были не напрасны и сделали все правильно
Я его не реализовывал. Но, благодаря совету zelenin, я знаю, что так можно и это вполне себе путь Джедая. В любом варианте, его труды не напрасны и ваша ирония неуместна.
Ладно, ждем другую пару сотен, кто покажет свои примеры реализаций сервисов для 5 самых популярных и 5 самых новых статей
это подмена понятий. Вы с rugarbo имеете плохую дискуссионную подготовку. Не можете оперировать фактами и доказательствами. Играете словами.
Там нет ничего про сложность, про то, что он попробовал и решил не заморачиваться.
Пример сервиса выше. Вам это сложно?
mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Виджет, main.php или как не нужно делать?!

Сообщение mkramer »

ksetrin, зачем вам примеры реализации именно блогов? Почему недостаточно примера от zelenin, показывающего, что в целом имеется в виду под сервисным слоем? Неужели вы сами не можете написать класс, который будет делать, что вам нужно?
Trampampam
Сообщения: 19
Зарегистрирован: 2015.12.07, 20:01

Re: Виджет, main.php или как не нужно делать?!

Сообщение Trampampam »

Trampampam писал(а):
ksetrin писал(а):Trampampam заодно покажите как вы реализовали сервисный слой, уж очень хочется увидить, что труды zelenin были не напрасны и сделали все правильно
Я его не реализовывал. Но, благодаря совету zelenin, я знаю, что так можно и это вполне себе путь Джедая. В любом варианте, его труды не напрасны и ваша ирония неуместна.
ksetrin писал(а):Ладно, ждем другую пару сотен, кто покажет свои примеры реализаций сервисов для 5 самых популярных и 5 самых новых статей
Вы неугомонны. По факту, у меня есть два виджета (популярное/новое), код которых одинаков за маленькой разницей в запросе. Естественно, что это неправильно и нужно упростить.

Здесь я и буду пробовать применять совет zelenin. Я надеюсь, что вы понимаете, что это моя проблема, а не zelenin или сервисного слоя.
Аватара пользователя
ksetrin
Сообщения: 81
Зарегистрирован: 2015.03.06, 10:00
Контактная информация:

Re: Виджет, main.php или как не нужно делать?!

Сообщение ksetrin »

Воу-воу полехче, сейчас речь не обо мне... еще вот хотел спросить
zelenin писал(а):best practices и разработчики yii - вещи не совместимые. О том речь и идет, что все сообщество yii покрыто примерами кода, непроходящими проверку на качественность. Разработчики самого фреймворка достаточно посредственны. Их нельзя ставить в пример. Они не развивают php-сообщество, не ведут блогов, не пишут каких-то интересных продуктов, не следят за трендами. Вся их заслуга - быстро работающий фреймворк с частично неплохо написанным кодом, частично с ужаснейшим.
Вы таки сами пишете проекты на yii? Может, конечно, я ошибаюсь или опять пытаюсь подменять понятия ну или имею плохую дискуссионную подготовку, но мне все же интересно узнать мотивы вашей столь большой активности именно на форуме этого фреймворка
Аватара пользователя
ksetrin
Сообщения: 81
Зарегистрирован: 2015.03.06, 10:00
Контактная информация:

Re: Виджет, main.php или как не нужно делать?!

Сообщение ksetrin »

mkramer писал(а):ksetrin, зачем вам примеры реализации именно блогов? Почему недостаточно примера от zelenin, показывающего, что в целом имеется в виду под сервисным слоем? Неужели вы сами не можете написать класс, который будет делать, что вам нужно?
Я то могу, у меня с этим проблем нет, но в бложек внедрять SL для такой ерундовой задачи я не стану. Написать статик хелпер дело 2 минут. Зачем примеры именно блогов? Ну так я следую контексту вопроса.
У нас SL используется в рабочем проекте, и этот проект, уж извините совсем не бложек.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Виджет, main.php или как не нужно делать?!

Сообщение zelenin »

ksetrin писал(а):Воу-воу полехче, сейчас речь не обо мне... еще вот хотел спросить
zelenin писал(а):best practices и разработчики yii - вещи не совместимые. О том речь и идет, что все сообщество yii покрыто примерами кода, непроходящими проверку на качественность. Разработчики самого фреймворка достаточно посредственны. Их нельзя ставить в пример. Они не развивают php-сообщество, не ведут блогов, не пишут каких-то интересных продуктов, не следят за трендами. Вся их заслуга - быстро работающий фреймворк с частично неплохо написанным кодом, частично с ужаснейшим.
Вы таки сами пишете проекты на yii? Может, конечно, я ошибаюсь или опять пытаюсь подменять понятия ну или имею плохую дискуссионную подготовку, но мне все же интересно узнать мотивы вашей столь большой активности именно на форуме этого фреймворка
ответ очевиден. следующий вопрос?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Виджет, main.php или как не нужно делать?!

Сообщение zelenin »

ksetrin писал(а):Написать статик хелпер дело 2 минут.
написать НЕ-статик хелпер дело двух минут минус время на написание слова static. И написанный хелпер будет сервисом.
Дело не в названии, а в инкапсуляции бизнес-вещей в отдельные классы. инкапсулируете вы в статик или не в статик - не суть важно. Почему статик плохо вы найдете в гугле "php static is bad" - ссылку я уже приводил выше.
Ответить