Pull to refresh

Comments 25

Этот выпуск оказался «более лучше» полезен, чем предыдущие. Спасибо за подборку!
Стартовало голосование по добавлению дружественных классов. Дружественный класс имеет доступ к private и protected полям класса, в котором он объявлен дружественным.

Class Friendship allows a class to be better encapsulated by granting per-class access to protected members.

Как-то очень спорно.
Страшно представить, к какой адской запутанности кода может привести подобное решение.
Тоже считаю это вредоносным предложением. Вон в C++ добавили дружественные классы, так теперь мучаются с ними.
Голосующие товарищи видимо с вами согласны. А вот мне наоборот, нравится идея. Использовал бы дружбу повсеместно в домене для лучше инкапсуляции. Например стало бы возможно запретить любое изменение связанной сущности кроме как через агрегат.
О какой лучшей инкапсуляции можно говорить в контексте предоставления доступа к приватным полям сторонним объектам?
Пример:
Class User 
 public function updatePost($args)
 {
  if ($this->status->isPrymary()){
     $this->post()->update($args);
  }
 }


Итого берем аггрегат, проверяем какие то бизнес правила, обновляем пост. Другому программисту поставили задачу реализовать обновление поста в другом месте, он извлекает пост — обновляет — кладет в хранилище. Заботливо спроектированный защитный метод пошел по ветру.
Я хочу сказать что если сущность x является частью агрегата y то мне нужен способ инкапсулировать работу с x через y. Это лучше чем просто следовать эвристике «делаем все через корень агрегата».
Может быть разумнее было бы расширить список модификаторов доступа? Например, модификатор package в java или модификаторы в c# решают подобные проблемы куда изящнее.
Согласен. Но касательно friends аргумент в стиле «это приведет к запутанности кода» выглядит по меньше мере странно. Есть те же трейты которыми код можно запутать уж точно не меньше. Простое правило — нужно используй, не нужно — не используй, вполне решает данную проблему.
Это правило не решает проблемы legacy кода от любителей модного и молодежного
По моему лучше «обрабатывать» таких любителей. Исключить/не включить 1 фичу уж точно не выход.

Аьв недавно столкнулся с такой необходимостью. К примеру паттерн билдер где работа делегируется объектам и не хочется все методы делатт паблик

Не используйте ассоциативные массивы, вообще говоря, никогда
Я бы не был настолько категоричен, только если речь идёт об очень больших массивах. Делал своё мини исследование на эту тему в рамках highloadcup. Автору удалось уменьшить использование памяти в 2 два раза, у меня с помощью разбивки одного ассоциативного массива на несколько SplFixedArray получалось уменьшить расход памяти в 8,5 раз.
Тоже подумал сразу о SplFixedArray. Но сейчас с приходом PHP 7 (7.3 в большей степени) показатели уже не такие плохие.
Но сейчас с приходом PHP 7 (7.3 в большей степени) показатели уже не такие плохие.
Ссылаться на тесты php 5 в 2018 году не имеет никакого смысла, конечно же все мои тесты были на php 7, на гитхабе об этом написано, а php 7.3, насколько мне известно, ещё не зарелизился.

Сейчас на Yii 1.1.15 делаю сайт благотворительного фонда. В этом мне помогает мамина коллега по ОНФ. Доверяю этой версии после изучение книги Дронова по HTML5 и PHP. Именно он использовал эту версию фреймворка. Эту книгу мне подарили на Новый 2018 Год.
Остался месяц и сайт будет готов на этом фреймворке.

Спасибо за информацию.
А зачем на Yii 1-ой версии, а не на Yii 2-ой версии?

Последую примерами из книги Дронова. Эта версия хорошая, компактная и имеются редкие ошибки. Работает более хорошо. Скачал с гитарой через рабочий браузер.

Sign up to leave a comment.