Pull to refresh
187
0
Альберт Степанцев @AlexLeonov

Программист. CTO. Архитектор. Преподаватель.

Send message
почему в ваших примерах нет ничего о IoC?

Потому что статья не об этом.
$obj имеет свойство bar

Здесь нелогичность. В моем примере — не имеет. Оно создается на лету.
Но есть моменты, где поведения удобнее

«Удобство» в данном конкретном случае не есть критерий качества кода.

ответ «будет кодом, покажу потом» меня не устраивает

Я вам уже неоднократно ответил.

Результат, аналогичный показанному вами поведению, достигается строчкой
$model->updated = date('Y-m-d H:i:s')
где-то в коде соответствующего процесса.
Кого именно?
Вы спрашиваете, почему «контроллер называют не форматтер или презентер»? Ну наверное потому, что контроллер ничего не форматирует и не показывает ))
лично я пока не могу представить

Остаётся только надеяться, что однажды сможете!
Просто не понял зачем

Вы не поняли. Не поняли зачем.
Честно — не знаю, что вам ответить. Ну ОК, постарайтесь понять :) Спросите, если что будет непонятно, хорошо?
Не извиняйтесь за ошибки, все мы люди, все ошибаемся.

В одном из комментариев Вы чуть-чуть наезжаете на Yii2

Наезжаю? Вы шутите? Я считаю его примером анти-дизайна и анти-проектирования, и как подобный пример всегда подаю студентам.
Это настолько нелепая архитектурная конструкция, что даже не знаешь, с чего и начать его разбор :) Наверное с самого факта его существования :)
ну вот, первый ценный коммент на статью :))
спасибо!

P.S. я действительно тут скромно обошел, думаю, как лучше сделать. но вы, разумеется, правы.
Я вас услышал. Для меня это ошибка. Ваш код нелогичен, метод $obj->getBar() должен возвращать нечто, что является 'bar' в составе $obj

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

Я именно так и считаю. Иначе бы не писал это статью.

А какая цель публикации? Чего Вы хотели ей добиться?

Чистое, незамутненное творчество. Чего пытался добиться Малевич, выставляя «Черный квадрат»? Я не знаю, но предполагаю, что однажды творчество превращается в потребность. У вас не так?

То, что я пишу комментарии на Хабре с включенным Т9

Где хоть вы его откопали? У вас реально что-то вроде Siemens S45?

никак не говорит обо мне, как о программисте, не так ли?

Хрен знает. Общее впечатление составляет. Неаккуратненько (с).

больше мне сказать нечего

Хорошо.
Автор (и авторы) внимательно смотрели туда. Однако пока что ни один коммент на хабре не заставил их заплакать и отказаться от развития своих библиотек. Наверное, в этом что-то есть?
Или же вы за полностью immutable подход?

Нет. Не полностью. Я за такой подход там, где он оправдан. Например метод filter() в коллекции просто обязан возвращать новую коллекцию, иначе мы не сможем построить fluent interface.

А чем плох вариант $obj->getBar()->setBaz($value)?

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

Кстати, у вас в коде ошибка. Метод getBar() вернет значение свойства bar и дальше цепочка прервётся.
Фабиену и Тейлору кто-то точно также говорил :)

А уж что говорили Расмусу — я не могу написать по цензурным соображениям!
НЕТ! ЗАЧЕМ?

Это внутренняя потребность творить. Разве вам она не знакома?

вы НЕ поняли разницу между Value Object и Entity

В данной статье мы не обсуждаем библиотеку ValueObjects. Впрочем, если вам хочется — пожалуйста. Но конструктивное обсуждение будет в статье, посвященной именно ей.

если бы вы написали, так, мол и так, учебных целей для делаю свой Фреймворк, ищу помощи от сообщества, оцените, пожалуйста!

Я не ищу помощи. Я буду ей благодарен, но не ищу. Особенно я не ищу помощи от тех, кто пишет «фреймоврки», «Непонравился», «Come Review»

Еще раз прошу прощения

Вам не за что просить прощения. Вы просто высказали своё мнение. Спасибо. Любое мнение ценно.

P.S. Зачем всё время «Фреймворк» с большой буквы? Это имеет какой-то смысл?
Отвечаю на заданные вопросы.

Зачем делать класс валидатор с состоянием, вынуждая создавать новый экземпляр на каждую валидацию?

Состояние в данном случае — побочный эффект применения ООП и наследования. Расскажите, как сделать правильнее.

От чего вы пытаетесь абстрагироваться таким образом? От самого PHP?

Не сумел ответить. Ваш вопрос не содержит позитивного или негативного утверждения. Всё равно что спросить «а ваши родители знают, что вы гей?»
Если вы приведете мне конкретный пример — буду счастлив.
Нет.
Это фактически заглушка, которая никогда не будет использоваться. Кроме как для зеленых тестов.

Если встретите где-то goto — сообщите сразу :)

Впрочем, как учебный пример — прекрасно. Сразу можно разобрать опасности такого подхода и показать на примере php-инъекцию.

P.S. Про библиотеку сериализации будет другая статья.
Под chaining вы понимаете fluent interface?


Не совсем. FI легко реализуется методами, которые заканчиваются на return $this;
Я же имею в виду то, что в PHP штатными средствами легко сделать

$arr = [];
$arr['foo']['bar'] = 42;

и это совершенно валидный код, но нельзя сделать:
$obj = new SomeClass;
$obj->foo->bar = 42;

Мы этот недостаток в StdGetSetTrait исправляем. Коряво, но по-другому пока никак. Нужно готовить RFC для внесения в сам язык чего-то вроде нативного JSON, чтобы получить возможность создавать одной строкой объекты любой вложенности.
Чорт, читать как «не считаю, что DI — панацея, которая делает код хорошим».

Я буду 10 раз перечитывать комментарий перед отправкой!

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity