@phpclubru

Страница 231 из 956
dasknix
08.06.2017
22:39:03
привет, народ

подскажите, почему хреново наследуется статика?

Pavel
08.06.2017
22:44:23
што

dasknix
08.06.2017
22:44:44
точнее так, действительно ли нету решения другого, кроме как создавать для дочернего класса свои свойства?

Google
dasknix
08.06.2017
22:45:00
я хочу получить наследование статических свойств в дочернем классе

но в итоге можно обратиться либо к parent (а это не выход, т.к. он у всех потомков будет одно значение иметь, что логично, т.к. папка то один)

либо объявлять каждый раз в каждом дочернем классе заново то же свойство ("поле", если угодно)

можно ли как-то автоматом отнаследоваться без явного объявления поля класса с тем же именем, что и у поля папы

?

..просто детей много, и архитектурно как-то ней айс

Pavel
08.06.2017
22:48:36
Не, придется объявлять

Статическое свойство родителя принадлежит всем потомкам одинаково, поэтому они не смогут получить свой инстанс свойства на класс.

dasknix
08.06.2017
22:50:53
понял. и до вопроса ещё понял. хорошо переформулировали) а как победить?

Dmitry
08.06.2017
22:52:20
статика уже архитектурно не айс ;)

dasknix
08.06.2017
22:52:55
почему? я вот в начале до разработки архитектуры подумывал в сторону того, что это плохо

но, в итоге я пишу код в десятки раз быстрее за счёт такой вот нотации

т.е. не просто в разы, а реально в разы быстрее. в отличие от бесконечных "obj->subroutine()->field"

Google
dasknix
08.06.2017
22:54:40
ну и т.п.

пример готового класса про клиента магаза

где я тут что плохо сделал? буду рад критике, прост понимая, что это вразрез с общепринятым подходом, я всё-равно не ощущаю неудобств, подводных камней от ухода от традиций ну и т.п.

может дадите прогноз на будущее этого проекта? )

Pavel
08.06.2017
22:58:00
Ну тут впринципе на скриншотах все сущности и так по своей природе синглтоны - Request, Response, Journal, Logger. Поэтому и кажется что с ними удобно работать в статике.

Dmitry
08.06.2017
22:58:43
А давно вообще программируешь?

dasknix
08.06.2017
22:59:04
а для объектов у меня в доменных структурах всё спрятано

Pavel
08.06.2017
22:59:13
А насчет клиента - я не понял что это за класс и за что он отвечает.

dasknix
08.06.2017
22:59:26
без фабрик работаю. объекты домена - куски поведенческой модели.. как-то так

Pavel
08.06.2017
22:59:50
Если работа с одним клиентом все время жизни скрипта, то это тоже логично что со статикой проще.

dasknix
08.06.2017
22:59:52
у клиента функции обычного CRUD

+ одна отдельная для "установить скидку клиенту"

Dmitry
08.06.2017
23:00:12
со статикой всегда все проще... писать

Pavel
08.06.2017
23:00:14
На самом деле интересная задача - на примерах показать, где именно рулят объекты и не рулит статика :)

dasknix
08.06.2017
23:00:35
вот. Павел верно заметил

Dmitry
08.06.2017
23:00:37
но вообще-то хороший программист - не тот, который умеет писать код быстро

dasknix
08.06.2017
23:00:37
если с одним

а если не с одним - я беру экземпляр AR просто или его ID

соврал.

всегда передаю ID

Google
dasknix
08.06.2017
23:01:30
а с ним уже работает другой доменный объект который отвечает за тип объекта чей ID ему передан

т.е. хочу я клиента другого отредактировать и пишу просто Client::updateFieldById($newFieldList[], $clientId)

и всё )

Дмитрий, мне надо напилить 20 магазов, не до размусоливания)

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

ну т.е. это имхо, но, думаю, многие согласятся

для этого был создан например совсем-совсем виртуальный класс Event

который по сути просто набор констант

но с ним писать и читать одинаково удобно, Вы уже читали как логируются события, согласитесь - так ведь понятно сразу что почём

вот он сам

Dmitry
08.06.2017
23:06:00
пиши на функциях, в общем тоже быстро ;)

Pavel
08.06.2017
23:06:03
Ну как бы тут _сразу понятно_ - потому что полторы строчки написано. А когда в проект потянешь пару десятков вендорных библиотек и своих исходников тысяч 400 строк наклепаешь, вот тогд и взвоешь от статики.

Dmitry
08.06.2017
23:06:12
когда не до размусоливания то, чо...

Pavel
08.06.2017
23:06:30
Да, по сути это обычный процедурный стиль.

В свежем пхп даже функции можно рассовать по неймспейсам вместо классов.

Dmitry
08.06.2017
23:06:50
главное, потом после полученения денег сменить телефон ;)

dasknix
08.06.2017
23:06:51
ну да, одно за другим, но это в контроллерах

структура домена уже немного иерархична

меня просто как понял что через DDD можно намного проще проектировать под задачи - пропёрло и всё переделал под виртуальные сущности прикладной модели (магаз в данном случае)

Pavel
08.06.2017
23:09:05
Ну вон я вижу у тебя там класс Article, как ты с ним работаешь? Если допустим на странице надо загрузить из базы 20 статей и вывести их в виде таблички.

Google
dasknix
08.06.2017
23:09:10
код сам из головы идёт как стих, как разговариваешь с интерпретатором через framework

Dmitry
08.06.2017
23:09:16
мдя, новые три буквы ушли в массы...

dasknix
08.06.2017
23:10:25
для Article ввиду типичности поставленных задач работы с ним у меня типовые Actions, так что я их покажу а в нужное место глазами подставите название объекта домена

вот он сам

Dmitry
08.06.2017
23:11:11
блин, глаза вянут

Admin
ERROR: S client not available

dasknix
08.06.2017
23:11:20
вот что с ним можно делать

почему вянут?

тут получаем список через приминение фильтров

Dmitry
08.06.2017
23:12:34
оформление кода адское, стиль кода адский.... и скриншоты для демонстрации кода - красивый такой черный бант сверху

dasknix
08.06.2017
23:13:11
this->domainObject определено в декларативном коде контрллера ArticleController

почему адское то? Вы пишите по делу, пож-та

я макс читабельно для себя разработал способ. если он не PSR-x это ещё не значит что это плохо, а скорее то, что Вы не умеете объективно оценивать =\

я не в обиде. но мне не требуется субъективизм. он никому вообще не требуется

Dmitry
08.06.2017
23:14:38
объективен только парсер ПХП

Pavel
08.06.2017
23:14:57
Вот мне интересно, как реализован $domainObject::getList() что он возвращает. Я так и не увидел.

dasknix
08.06.2017
23:15:46
вот getList для объектов домена которые работают с реальной инфой (StoredObject)

Dmitry
08.06.2017
23:15:49
я же не буду говорить, что код не тестируемый в принципе... окажется, что тут не до тестов, лес валить нужно ;)

dasknix
08.06.2017
23:16:19
ну я на тесты подзабил, да

а что?

Google
dasknix
08.06.2017
23:16:33
не думаю, что нельзя под этот подход так же нафигачить тестов

только потому что статика что ли всё плохо по Вашему?

Pavel
08.06.2017
23:16:59
О, ну $query->getAll() это уже объект а не статика )

dasknix
08.06.2017
23:17:05
(учитывайте сжатые сроки разработки приложения)

ну так getAll это то, что попадёт уже во View

Dmitry
08.06.2017
23:17:23
паш, я думаю это уже не его код, где ->getAll :)

Pavel
08.06.2017
23:17:38
Плох не сам по себе факт статики, а те страдания которые она приносит про поддержке и доработке приложения.

dasknix
08.06.2017
23:17:46
код мой от начала до конца, кроме самого Yii2, конечно

AR использую готовый

Dmitry
08.06.2017
23:17:59
Вот ты паш глубокую мысль щас сказал ;)

dasknix
08.06.2017
23:18:04
хорошо. какие страдания?

вот я через полгода нах забуду контекст вообще

взгляну и за сек пойму что куда

Dmitry
08.06.2017
23:18:39
так я и говорю, getAll не твой.... все, что не статика - не твое ;)

Страница 231 из 956