@phpclubru

Страница 232 из 956
Pavel
08.06.2017
23:19:32
Ну это так не честно, навернуть чуть-чуть статики вокруг не статики не считается.

dasknix
08.06.2017
23:19:39
тексты Exception ещё разьве что не определил конкретно под каждую ситуацию, не обращаем внимания на этот казус пока

Pavel
08.06.2017
23:19:45
Это так-то и ларавель написан... =(

dasknix
08.06.2017
23:20:08
ахаха

Google
Pavel
08.06.2017
23:20:38
Но вообще фишка объектов как раз в том что ты имеешь на каждый объект свой инстанс свойств, в которых хранятся разные данные.

Dmitry
08.06.2017
23:20:49
Слуш, не распинайся, это сложно объяснить... можно, но долго, скучно и никому не интересно. Ибо никому не интересно убеждать тебя в чем-то. Вон Adel собирается доклад читать какой-то, послушай ;) А потом заяви ему "все эти ваши объекты - это все от недостатка опыта, профессионал и на статике прекрасно пишет" ;))

dasknix
08.06.2017
23:21:33
@chebotarevp ну да, когда их много я имею их массив, как бы это не звучало

делаю с ними через него что хочу вдоль и поперёк

Dmitry
08.06.2017
23:22:05
тем более, что static are evil в интернете хватает

dasknix
08.06.2017
23:22:38
только всё-равно я этот массив обработаю так: $coolObjectList = [$obj1, $obj2..] ObjectManipulator::manipulateObjectListByArray($coolObjectList);

Dmitry
08.06.2017
23:22:49
и освой все же PSR

dasknix
08.06.2017
23:23:09
т.е. внизу с объектами то работать можно и нужно, но я говорю про слой командный, которым запонены контроллеры

нельзя же на чистой статике выехать.. хотя я ещё не думал об этом!

пока я один и сроки сжаты - не до PSR

если пойду в контору - придётся, вероятнее всего

я и композер то не оч уважаю. просто выхода нет уже

Dmitry
08.06.2017
23:24:34
да... я тоже был таким

Google
Pavel
08.06.2017
23:24:39
Ну ведь такой код другие разрабы не смогут поддерживать. То есть ты делаешь заподлянку заказчику.

Dmitry
08.06.2017
23:24:54
лет 15 назад

dasknix
08.06.2017
23:24:58
почему? чем он не понятен то?

нет. я просто для себя разработал удобный быстрый способ кодить. вот и всё. нету подоплёк. нету скрытых смыслов.

и он реально быстрый не потому что рано или поздно ты в своём лесу каждую ветку знаешь

а потому что интуитивен через набор общеизвестных понятий

неужели Вам будет так трудно написать

Debug::log('text')

Dmitry
08.06.2017
23:26:22
даа..... я не смогу

dasknix
08.06.2017
23:26:49
или например давайте из другой области. вот например я вижу код первый раз и это не код моего/Вашего проекта

но с таким же подходом организованный

пускай это будет.. что-то из простого предложите

хз.. доктор

схема работы доктора, подойдёт?

да хоть водителя

собственно

Dmitry
08.06.2017
23:28:02
забей

dasknix
08.06.2017
23:28:15
Driver::getCarByGarageId($garageId)

много надо было мозгов чтобы это придумать? а чтобы понять?

почему забей? я то уйду уже скоро много работы. но я не понимаю, а Вы не хотите отходить от общей доктрины просто, мне кажется, т.к. она в зоне конмфорта

Google
dasknix
08.06.2017
23:29:39
@chebotarevp что думаете?

Pavel
08.06.2017
23:31:33
Не, тут общая доктрина ни при чем. Объекты имеют вполне определенные поведенческие преимущества, которые доказаны годами разработки.

То есть например писать Debug::log('text') это как минимум приводит к сильной связности кода. Если вдруг захочется вместо этого логгера использовать другой класс логгера (который например пишет в память), то придется по всем исходникам искать вхождение этого класса и заменять.

Но если передавать в объект инстанс логгера с интерфейсом, то ничего вручную заменять не надо - достаточно просто в конфиге указать что туда передается другой объект логгера.

Dmitry
08.06.2017
23:33:45
паш, ты не объяснишь, боюсь... он находится на том уровне сложности, что возразит "я пойду и перепишу Debug"

Pavel
08.06.2017
23:34:08
Этот пример может быть щас кажется натянутым, но в реальной жизни он концептуально очень жизненный. Постоянно надо менять поведения объектов без переписывания их во всех местах.

Dmitry
08.06.2017
23:34:27
В общем для него не вижу ничего плохого, что бы использовать статику. Пишут же в процедурном стиле.

Pavel
08.06.2017
23:35:01
паш, ты не объяснишь, боюсь... он находится на том уровне сложности, что возразит "я пойду и перепишу Debug"
Ну мне кажется интересно для себя сформулировать это, т.к. сходу я к своему удивлению сделать это не смог. Оно уже настолько вшито в рефлексы что все на интуитивном уровне делается. =)

Dmitry
08.06.2017
23:35:45
Ну да, попробуй объясни, чем плохо нарушение srp

чем плоха сильная связанность

Pavel
08.06.2017
23:36:37
Ну вот один пример трудностей я привел, впринципе если вдуматься то можно привести еще примеры существенных недостатков.

Dmitry
08.06.2017
23:36:39
такое или принимаешь на верну с хорошими учитилями или приходишь через свои шишки

Pavel
08.06.2017
23:38:01
Такое ощущение что я эту автарку где-то видел уже и это троллинг =)

Dmitry
08.06.2017
23:38:47
а скриншоты с кодом взяты из методички? ;)

Pavel
08.06.2017
23:40:19
Ну вдруг человек решил основательно подготовиться чтобы тут зажечь сотню пуканов

А тут только мы два флегматика ?

Dmitry
08.06.2017
23:42:29
через меня много разноуровных проектов проходит... есть такие, которые заслуживают и такого подхода ;) нахреначить и забыть унылое г

dasknix
08.06.2017
23:50:43
так. поехали. Debug - искать вхождения. Вы серьёзно? у меня везде, например, есть базовый класс. почему нельзя разветвить иерархию и сделать, например вот так: BaseDebug > DebugAdvanced BaseDebug > DebugExtended

и либо переключать в Debug вызовы между DebugAdvanced и DebugExtreme или вовсе проброс сделать, если логикой не предусмотрено в зависимости от ситуации вызывать тот или иной обработчик (точнее writer) отладочной инфы

зачем ползать по всему коду когда это можно сделать в одном месте короче.

Google
Dmitry
08.06.2017
23:52:24
ну вот о чем я и говорил, Паш ;)

dasknix
08.06.2017
23:53:53
Но если передавать в объект инстанс логгера с интерфейсом, то ничего вручную заменять не надо - достаточно просто в конфиге указать что туда передается другой объект логгера. да ещё и передавать что-то надо! да ещё и каждый раз

блин а зачем те же синглтоны?

кстати я d логгере источник события беру автоматом класс, который его вызвал и всё

т.е. та доменная модель сама на руку мне играет

даже не надо указывать откуда прилетело (те самые event sources становятся не нужны вообще, т.е. уже две вещи я не указываю из того, что указываете Вы)

Pavel
08.06.2017
23:56:11
и либо переключать в Debug вызовы между DebugAdvanced и DebugExtreme или вовсе проброс сделать, если логикой не предусмотрено в зависимости от ситуации вызывать тот или иной обработчик (точнее writer) отладочной инфы
Я не совсем понял что тут написано, но отдаленно как раз и похоже на обычную замену инстансов классов, просто описанную другими словами.

dasknix
08.06.2017
23:56:16
паш, ты не объяснишь, боюсь... он находится на том уровне сложности, что возразит "я пойду и перепишу Debug"

)))

доехал до этого поста)

Admin
ERROR: S client not available

dasknix
08.06.2017
23:57:24
ну предположим в зависимости от какого-то $condition нам надо внутри Debug::write() писать либо в память либо в файл

берём пишем static function write(){ $writer = $condition == variant1 ? closureFunctionFileWriter() : closureFunctionMemoryWriter(); }

если много у условия значений - свич, ну это не суть уже, суть вы поняли

а потом уже просто $writer($debugMessage);

Pavel
08.06.2017
23:59:35
Ага понял, но ведь это все подвязка на конкретные реализации.

dasknix
08.06.2017
23:59:40
и улетит куда надо

ну да

ща я ещё не всё ваше дочитал, пока вижу только преимущества моего подхода, правда. извините за нескромность

Pavel
09.06.2017
00:01:06
Ну это недостатки, извините за нескромность =)

Google
dasknix
09.06.2017
00:01:16
Ну да, попробуй объясни, чем плохо нарушение srp

чем плоха сильная связанность

где тут она сильная? правила именования функций в подходе как интерфейсы, тайп-хинтинга всё-равно в пхп нормального нету так что про него не говорим

любой участок кода может быть заменён другим

т.к. эта domain area по сути разбита по горизонтали на мини-модули - объекты

Pavel
09.06.2017
00:02:26
Если надо будет добавить еще третье хранилище логирования, да еще зависящее от каких-то других компонентов - придется лезть в код функции write() и править ее. Это и есть фатальный провал.

Dmitry
09.06.2017
00:02:29
Понимаешь тут какое дело. Вот представь себе, что попал ты на древний остров.. или в прошлое, к врачам. И пытаешься им объяснить, что руки мыть нужно. А они тебя не понимают... и считают за идиота, да... ;) Земмельвайс был такой.

dasknix
09.06.2017
00:02:45
каждый из которых если он Stored - может быть как угодно реализован но всегда вызван исходя из одинакового набора правил

Если надо будет добавить еще третье хранилище логирования, да еще зависящее от каких-то других компонентов - придется лезть в код функции write() и править ее. Это и есть фатальный провал.

почему?

ты хочешь чтобы поведение класса объекта было допустимо изменять в любом месте кода из самого клиентского кода что ли?

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

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

я не спорю. но я до сих пор не могу принять ни одного из Ваших аргументов, т.к. не вижу у них ни почвы ни связи с реальной ситуацией ни смысла прикладного

при всём уважении.

Pavel
09.06.2017
00:06:08
Ты не можешь подсунуть другой класс вместо Debug в качестве логгера т.к. он у тебя жестко прописан в коде.

dasknix
09.06.2017
00:06:13
я упёртый и труднообучаемый. так было всегда и не спорю. но пока не понял почему плохо..

всмысле не могу? залез и поменял

кто мне запретит?

Pavel
09.06.2017
00:06:51
dasknix
09.06.2017
00:07:02
зачем если в одном достаточно!

Pavel
09.06.2017
00:07:18
Не достаточно.

dasknix
09.06.2017
00:07:22
или нужен более гибкий настраиваемый в зависимости от окружения класс?

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