
Dmitriy
13.01.2017
22:50:55
@yii2ru

Виталий
13.01.2017
22:51:14
капец, столько чатиков уже

Dmitriy
13.01.2017
22:52:06

Роман
13.01.2017
22:52:06
Такой вопрос, вот я пишу класс. И если в нём есть что-то, что должно прекратить выполнение скрипта, die() уместен? Или нужно исключения кидать?

Google

Dmitriy
13.01.2017
22:52:13
Нет
исключение

Виталий
13.01.2017
22:52:54
другой вопрос что люди не могут найти решений

Роман
13.01.2017
22:53:16
http://pastebin.ru/XDqQHdNj
?
Я это понимаю, но пока так.

Dmitriy
13.01.2017
22:54:24

Роман
13.01.2017
22:54:47
А есть что-то штатное в PHP чтобы сразу проверить на наличие нужного функционала?
Или свои велосипеды писать?

Dmitriy
13.01.2017
22:55:53
зачем везде static ?

Роман
13.01.2017
22:56:11
Так класс статический. Чтобы объект не создавать?
Или я что-то не так понимаю в твоём вопросе?

Google

Виталий
13.01.2017
22:57:55
видимо просто разные сложности проекты. будет время перепишу этот роутинг и будет это как отдельная либа
ну от сложности проекта не зависит. Просто вот у тебя задача на которую ии не рассчитан из коробки, так как твоя задача больше исключение чем правило. Ты, как опытный разработчик, должен это понимать и принять. А потом быстренько найти решение для построение сложного роутинга на выбранном инструменте - решение есть, написать свой рул.
Я так обычно делаю и проблем не знаю.
И я четко понимаю что ии умеет хорошо а что нет, соответственно знаю как реагировать если он чего-то не умеет)

Dmitriy
13.01.2017
22:58:02

Роман
13.01.2017
23:00:17
Преимущество над процедурным стилем вижу как минимум в инкапсуляции. Этот класс - вещь в себе, в него нечего добавлять и расширяться едвали будет когда. Просто надоело каждый раз проверять версии и т.д.

Виталий
13.01.2017
23:01:04
а еще статические методы не тестируемы, почти, без костылей

Dmitriy
13.01.2017
23:02:12

Виталий
13.01.2017
23:03:05
у меня роутинг рос только когда я rest api роутил
магазины и корпосайты и вся мелочь умещалась в 5-6 строчках

Dmitriy
13.01.2017
23:04:11
У меня не controller/action обычно

Виталий
13.01.2017
23:04:38
а как?
может в этом и проблема?))
post/123 => post/view
post => post/index
post/update/123 => post/update
post/delete/123 => post/update
стандартная схема роутина. Местами можно менять только составляющие и все.
Для блога еще сео надо. Тут не подойдет такое если нормальное сео делать.
Как ты обычно у себя делаешь?

Dmitriy
13.01.2017
23:07:31
Если в приложении controller/action то да это легко. а так . это мрак. Ну разные модули в блоге. я еще люблю отделять пост и гет методы. в разные функции

Виталий
13.01.2017
23:09:19
пост и гет в разные функции это как?

Dmitriy
13.01.2017
23:10:59
getCreate() - это гет postCreate() пост не люблю когда в сложных приложения actionCreate отвечал за гет и пост

Виталий
13.01.2017
23:11:46
в чем профит?
зачем ты так делаешь?

Google

Виталий
13.01.2017
23:12:07
страница create должна и то и то отрабатывать
ее задача показать форму, потом принять пост и заполнить модель, отрбоать а потом опять показать вьюху или редирект... зачем разделять?

Dmitriy
13.01.2017
23:12:56
Не должна.

Виталий
13.01.2017
23:12:59
должна

Dmitriy
13.01.2017
23:13:19
Нет. я так понимаю ты только на йии работаеть ? =)

Виталий
13.01.2017
23:13:31
на симфони еще
а где ты видел что не должна?

Dmitriy
13.01.2017
23:14:17
Да в той же ларке удобно раздельно обрабатывать пост и гет

Виталий
13.01.2017
23:14:33
ну, в этом нет смысла просто)
объясню

F01134H
13.01.2017
23:16:34
Разделяй и влавствуй

Dmitriy
13.01.2017
23:16:39
во

F01134H
13.01.2017
23:16:48
Когда у тебя на пост и гет отдельные методы, тебе легче ими управлять

Виталий
13.01.2017
23:16:58
покажи пример кода)

Dmitriy
13.01.2017
23:17:05
ща минутку

Виталий
13.01.2017
23:17:06
так проще будет, мож я чего не вкурил

Dmitriy
13.01.2017
23:19:35
https://gist.github.com/exileed/11ffd08fe132c4151ffed16483350d8b вот простой пример

Виталий
13.01.2017
23:22:27
эм... ты одну логическую операцию разбил на 2 метода. Это не упростило, а усложнило. Причем у тебя в 99% случает get метод будет в одну строку - отдать вьюху.
Так же, когда юзер ошибся с вводом данных он желает увидеть свою форму снова, заполненную и с флеш сообщением про ошибки. В твоем варианте такого сделать нельзя будет. Ну либо в пост методе снова рендерить вьюху - это дублирвоаие кода.
Так же, часто во вьюху нужно передавать обязательные пеменные, если их нет - ошибка. Дублировать код снова и в гет создавать форму или объект А пустой чтобы просто ошибки не было и в пост его же...
в общем, такой вариант сводит на нет станадртное юзер поведение.

Google

Dmitriy
13.01.2017
23:23:41

Виталий
13.01.2017
23:23:43
именно в веб приложении.
покажи

Dmitriy
13.01.2017
23:25:21
ща в другую иде загружусь
только давай после этого примера вернемся к yii2

Виталий
13.01.2017
23:25:43
я тебе больше скажу) эти методы всегда должны быть тонкими. Я на yii2 уже давно свел все к конструктору подключаемых к контроллеру экшенов и конфигурированием их парой параметров. Сча покажу. То есть у меня на проекте 99% экшенов стандартных из моего репозитория.

Dmitriy
13.01.2017
23:26:30
Пля ,памяти не хватает на 2 ide-

Виталий
13.01.2017
23:26:40
99% контроллеров у меня выглядат вот так https://yadi.sk/d/sm0igTUz38s64i
это админка)

Admin
ERROR: S client not available

Виталий
13.01.2017
23:27:10
это CRM система достаточно сложная
это главнй контроллер админки
https://gist.github.com/voskobovich/53b4012268d6504069fdb8eb012b7cd9
вот тут все эти экшены внешние https://github.com/voskobovich/yii2-crud-toolkit

Dmitriy
13.01.2017
23:29:11
А ты предстать сложнее приложении . на пример нужно отдать 30 переменных в вьюху

Виталий
13.01.2017
23:29:42
это не правильно)
ты во вьюхе должен передать один объект, ну два
а в них уже запакована бизнес логика сложная))

Dmitriy
13.01.2017
23:30:27
с чего это не правильно ? как их передать тогда

Виталий
13.01.2017
23:30:36
в этом то и феншуй)) если я вижу, что во вьюху уходят куча переменных - я сразу знаю что я делаю что-то не так

Google

Dmitriy
13.01.2017
23:30:37
все равно их нужно где-то получать

Jan
13.01.2017
23:30:40
во вьюхах вообще бизнес-логики не должно быть

Dmitriy
13.01.2017
23:30:52
Да нету ее там. с чего взяли то

Виталий
13.01.2017
23:31:14
ну, это лично мой опыт) если много переменных во вьюху - значит у тебя толстый экшен контроллера получился, а это уже плохо
https://gist.github.com/voskobovich/5d87b770542f8c78eab9bf094d72bb70
вот мой один из сложных контроллеров на проекте

Dmitriy
13.01.2017
23:32:16
Ладно, 2 иде у меня не запускается и я не смогу показать где нужно разделение на пост и гет . фиг с ним

Виталий
13.01.2017
23:32:49
любая логика, самая сложная реализуется максимально просто. Я намеренно себе убрал возможность кодить в контроллере )) это такой лайфхак, чтобы руки не тянулись
90% всех задач по редактированию форм и загрузке файла, с кропом а попапах решаются моими экшенами.
Так же выгрузка связанных моделей, например авторы книги. Я разок сел и заморочился, создал себе конструктор и забыл про проблемы)
все нужные кастомные методы дописываются рядом с методом actions(). За всю историю проекта у меня пришлось дописать буквально пару экшенов в нескольких контроллерах.
Хз, может я чет не то делаю и мне везет строить сложные приложения на ии2, либо другие что-то усложняю)
Так, я спать пойду) Всем спокойно!
Приятно было пообщаться. Все же обмен опытом!

Dmitriy
13.01.2017
23:39:44
Спокойны ночи.
И спс за бесполезный спор =)

Алексей
14.01.2017
09:11:09
/yazaban

Pavel
14.01.2017
12:20:51
https://github.com/symfony/symfony/pull/21289
Крутое решение вместо папок использовать psr4 для авторегистрации сервисов

Виталий
14.01.2017
13:52:03
Коллеги, я вчера познакомился с двумя отличними инструментами PHP CS и PHP CS Fixer. Настроил для своего проекта PHP CS по стандартам Yii2 из офф репо https://github.com/yiisoft/yii2-coding-standards.
Но не нахожу в документации как по настройкам PHP CS запустить PHP CS Fixer. И возможно ли это вообще?
Так как логично, что мне теперь весь проект надо прогнать и исправить :)
хочу иметь один конфиг на два инструмента - это реально?

Timur
14.01.2017
14:59:14
Deprecated по сути.

Виталий
14.01.2017
14:59:48
всмысле?