юнит-тесты независимы, откуда получить? Если что-то получать и с этим работать — это уже интегарция с чем-то, то тест-функционально-интеграционный мимнимум.... пусть с использованием phpunit
Clean Coder, нет, мой тезис про сеттеры не связан с билдером :)
бмлдер про сложные правила и управление этими правилам снаружи от объекта
Ну вот ORM уже приводил в пример: есть простой объект Query, какими вы там билдерами и выражениями, XML/YAML, спецификациями его создаете — не важно, там билдеры на себя логику возьмут...
даже через сеттеры — билдер там в себе насытился логикой создания и через сеттеры задал ваш Query, то есть эти вещи могут быть вместе, они не связаны
Clean Coder, где меняет там и меняет...
changeAge() — если это бизнесухой подразумевается
потому что вдруг внутри этого метода нужно посмотреть на состояние (нация к примеру или еще что-то)
Это инкапсуляция
ВЫ же предлагаете старый добрый способ "нараспашку" — состояние тут, а логику снаружи на основе геттеров и сеттеров нагородить... я об этом и писал — нарушение инкапсуляции (данные отдельно, поведение снаружи отдельно)
Clean Coder, вы не покажите мне ни одного проекта, где в сеттерах такая логика
потому что тут может быть так, что age должен быть для некоторых состояний строго быть больше 18 лет и приплыли... сложные правила такой валидации почти сразу прилетают...
кроме того, ничего не мешало это в конструкторе сделать даже в этом случае, зачем размазывать по сеттерам?
Билдер нужен для сборки объекта:
Например куча логики он содержит, которая к сборке целевого объекта относится, а к самому объекту нет...
Например собирать из сложного DSL запрос в БД... там и раскрытой и лексер и критерии и логические выражения or/and/equal и многое др... все это в объект квери не запихнуть и размазано, а квери-билдер это объединяет и билдит этот квери по итогу на основе тех правил, что мы вызвали у билдера
Clean Coder, сеттеры не содержат бизнес-логику, тк сеттер на то и сеттер, что напрямую сетит данные, он не может содержать все варианты установки значения
А с публиками я сравнил: то есть поля то приватные, но публичные благодаря сеттерам
Сеттеры не нужны ни для чего, это нарушение инкапсуляции
Вы начали докапываться к словам правил, не пытавшись понять суть тех или иных правил...
Есть проблема: люди пишут «есть задача..., слелайте» и есть вопрос «вот тут и так я делаю, в чем дело?». Первый вопрос нужно удалить, и пишется правило... приходите вы и указываете, что формулировка подходит под второй...
ну и пусть подходит: полномочие есть и МОЖЕТ админ удалить, но зачем, если на вопрос отвечают :)
На пхп максимум быстрая сортировка спрашивается
Но задачи разного рода даются, чтобы оптимально что-то сгруппировать и обработать... ну банально чтобы увидеть, что есть понимание: чем отличается кубич сложность от линейной
Я прошёл много собесов на пхп и вопросы по хэшмапу и btree были только 2 раза (одни из последних)
Могу предположить, что в руби, пайтон-вебе и же будет все примерно также
...
В др языках могут к этому подходить более внимательно
в дев-режиме изменения меняются, в проде нет
все корректно, просто вы работаете из нулевых в сарае, шатая код на хостинге руками, не используя принятые подходы деплоя (автодеплоя)
если используется PDO драйвер, то закрывается с удалением объекта PDO и stmt
https://www.php.net/manual/ru/pdo.connections.php#...
В em метод close() нужен для того, чтобы в случае закрытого подключения создавать новое... например для ретрая или какого-то механизма иного...
...
Если просто вас заботит "как закрыть", то да — скрипт выполнится и закроется подключение