Comments 25
Этот выпуск оказался «более лучше» полезен, чем предыдущие. Спасибо за подборку!
+1
Стартовало голосование по добавлению дружественных классов. Дружественный класс имеет доступ к private и protected полям класса, в котором он объявлен дружественным.
Class Friendship allows a class to be better encapsulated by granting per-class access to protected members.
Как-то очень спорно.
Страшно представить, к какой адской запутанности кода может привести подобное решение.
+2
Тоже считаю это вредоносным предложением. Вон в C++ добавили дружественные классы, так теперь мучаются с ними.
0
Голосующие товарищи видимо с вами согласны. А вот мне наоборот, нравится идея. Использовал бы дружбу повсеместно в домене для лучше инкапсуляции. Например стало бы возможно запретить любое изменение связанной сущности кроме как через агрегат.
+1
О какой лучшей инкапсуляции можно говорить в контексте предоставления доступа к приватным полям сторонним объектам?
0
Пример:
Итого берем аггрегат, проверяем какие то бизнес правила, обновляем пост. Другому программисту поставили задачу реализовать обновление поста в другом месте, он извлекает пост — обновляет — кладет в хранилище. Заботливо спроектированный защитный метод пошел по ветру.
Я хочу сказать что если сущность x является частью агрегата y то мне нужен способ инкапсулировать работу с x через y. Это лучше чем просто следовать эвристике «делаем все через корень агрегата».
Class User
public function updatePost($args)
{
if ($this->status->isPrymary()){
$this->post()->update($args);
}
}
Итого берем аггрегат, проверяем какие то бизнес правила, обновляем пост. Другому программисту поставили задачу реализовать обновление поста в другом месте, он извлекает пост — обновляет — кладет в хранилище. Заботливо спроектированный защитный метод пошел по ветру.
Я хочу сказать что если сущность x является частью агрегата y то мне нужен способ инкапсулировать работу с x через y. Это лучше чем просто следовать эвристике «делаем все через корень агрегата».
0
Может быть разумнее было бы расширить список модификаторов доступа? Например, модификатор package в java или модификаторы в c# решают подобные проблемы куда изящнее.
0
Аьв недавно столкнулся с такой необходимостью. К примеру паттерн билдер где работа делегируется объектам и не хочется все методы делатт паблик
0
Не используйте ассоциативные массивы, вообще говоря, никогдаЯ бы не был настолько категоричен, только если речь идёт об очень больших массивах. Делал своё мини исследование на эту тему в рамках highloadcup. Автору удалось уменьшить использование памяти в 2 два раза, у меня с помощью разбивки одного ассоциативного массива на несколько SplFixedArray получалось уменьшить расход памяти в 8,5 раз.
+1
Тоже подумал сразу о SplFixedArray. Но сейчас с приходом PHP 7 (7.3 в большей степени) показатели уже не такие плохие.
0
Сейчас на Yii 1.1.15 делаю сайт благотворительного фонда. В этом мне помогает мамина коллега по ОНФ. Доверяю этой версии после изучение книги Дронова по HTML5 и PHP. Именно он использовал эту версию фреймворка. Эту книгу мне подарили на Новый 2018 Год.
Остался месяц и сайт будет готов на этом фреймворке.
-9
А как это относится к теме?
+1
Спасибо за информацию.
+4
А зачем на Yii 1-ой версии, а не на Yii 2-ой версии?
+1
Держите нас в курсе.
+6
CMS: Вышла новая версия CMS на Symfony eZ Platform 2.2: новость в блоге, GitHub.
0
Касательно «Phpdbg намного быстрее Xdebug для подсчета покрытия» — есть сомнения, что результаты покрытия совпадают, о чем предупреждает сам автор Xdebug. Стоит отнестись с осторожностью:
hackernoon.com/generating-code-coverage-with-phpunite-and-phpdbg-4d20347ffb45
hackernoon.com/generating-code-coverage-with-phpunite-and-phpdbg-4d20347ffb45
0
хочу себе блестящего слоника)
+1
Sign up to leave a comment.
PHP-Дайджест № 134 (24 июня – 8 июля 2018)