Open avid opened 11 years ago
Я вот тоже не понимаю зачем клонировать контейнер.
public function getInactiveWorkers
Мы так не пишем :) Если нужны неактивные рабочие, то можно вернуть сразу их, а не контейнер. Причем для этого критерию можно построить по Worker::dao()
Мы так не пишем :) Если нужны неактивные рабочие, то можно вернуть сразу их, а не контейнер. Причем для этого критерию можно построить по Worker::dao()
Это же не значит, что так делать нельзя?! К тому же на мой взгляд, достаточно удобно. Ведь в моем примере можно использовать такие преимущества UnifiedContainer как lazy и getCount. А в предложенном @dovg варианте придется написать аж три метода: для получения списка объектов, для получения списка идентификаторов и для получения количества.
Если же вы считаете, что такое применение некоррректно, то метод __clone у UnifiedContainer надо сделать protected.
Моё мнение всё такое же - почему бы и не клонировать. Никто не требует использовать клонирование, но руки оно немного развязывает.
Так же мне кажется раз уж происходит клонирование, то нужно клонировать и свойство UnifiedContainerWorker->$criteria
Так же мне кажется раз уж происходит клонирование, то нужно клонировать и свойство UnifiedContainerWorker->$criteria
Не проблема. Добавить?
Если не только мне кажется правильным, то добавить. Иначе разубедить :)
Итак, еще раз предлагаю diff по issue #7. Переопределен метод __clone и добавлен тест на этот случай для версии 1.1
Примеры кода с результатами работы
Meta
Данные в БД
Обращаю ваше внимание на то, что сущности Worker с id 3,6 и 9 имеет значение FALSE в поле active.
Добавляем два своих метода
Методы будут получать только активных и только неактивных работников у заданной компании соответственно.
Код теста
Во всех трёх тестах мы получаем количество сущностей Worker, привязанных к заданной Company, используя три разные функции в разных порядках.
В последнем тесте специально вставил перед getCount() вызов fetch(), ибо наличие/отсутсвие fetch() ни на что не внияет.
Результаты
Перейдем к самому вкусному :)
Без патча
С патчем
Итоги
Разница видна невооружённым глазом. В результатх работы кода без пачта видно, что во втором и третьем тестах общее количество сотрудников неверно. Используя патч, подобных проблем мы не наблюдаем, и во всех случаях цифры верные.
P.S. Выжимки из предыдущего обсуждения: