Даже боюсь спрашивать что плохого в плейсхолдерах))
Но причем тут ОРМ, вьюхи и прочее описаное. Речь ведь всего лишь о документах и некотрой динамической логике во время их создания…
Да в чем усложнение то? Просто отдельные объекты со своим поведением, котроые ни от кого не зависят и от них тоже никто не зависит. Передали в конструктор — хорошо, используем. Не передали — ну и ладно, просто создаем документ.
Да и вообще любая модификация архитектуры требует определенных рефакторингов, это часть процесса разработки, которая как раз и позволяет не прибегать к костылям, мусору и копипасте.
Да, понятно что сам Document не используется на прямую. Я просто о сути. Так вот, я думаю что поскольку объект описывает документ, то имеет смысл логику создания документа завернуть в конструктор. То есть после
$doc = new Prikaz();
Мы уже получаем документ и работаем с этим объектм, без вызова дополнительного метода. А поскольку у нас предполагается возможность вносить какие-либо модификации и/или предварительные расчеты в процессе его создания, то можно передвать в конструктор объект-мутатор (так оно кажется назвается =) ), который будет уметь работать с определенным типом документа(-ов).
Только нужно место, где будет происходить определение того какие мутаторы использовать. Таким образом просто меняем объеткы в зависимости от ситуации и документы нужным нам образом модифицируются или еще какието действия производятся в процессе создания.
Однажды приходилось использовать bson для хранения очередей сообщений. Так же стоял вопрос выборе алгоритма сериализации. И вот что получалось:
Тесты проводились на массиве в 100к элементов размером ~150 байт. Оказалось, что json занимает на ~800kb меньше, чем bson. Однако скорость парсинга bson’a почти в 2.2 раза выше.
Причем разница в размере насколько помню растет с ростом объема данных.
Ниже показатели:
время парсинга (микросекунды):
json: 0.498
bson: 0.213
Но причем тут ОРМ, вьюхи и прочее описаное. Речь ведь всего лишь о документах и некотрой динамической логике во время их создания…
Да и вообще любая модификация архитектуры требует определенных рефакторингов, это часть процесса разработки, которая как раз и позволяет не прибегать к костылям, мусору и копипасте.
Мы уже получаем документ и работаем с этим объектм, без вызова дополнительного метода. А поскольку у нас предполагается возможность вносить какие-либо модификации и/или предварительные расчеты в процессе его создания, то можно передвать в конструктор объект-мутатор (так оно кажется назвается =) ), который будет уметь работать с определенным типом документа(-ов).
Только нужно место, где будет происходить определение того какие мутаторы использовать. Таким образом просто меняем объеткы в зависимости от ситуации и документы нужным нам образом модифицируются или еще какието действия производятся в процессе создания.
Так?
Тесты проводились на массиве в 100к элементов размером ~150 байт. Оказалось, что json занимает на ~800kb меньше, чем bson. Однако скорость парсинга bson’a почти в 2.2 раза выше.
Причем разница в размере насколько помню растет с ростом объема данных.
Ниже показатели:
время парсинга (микросекунды):
json: 0.498
bson: 0.213
размеры(байты):
json: 14 688 891
bson: 15 488 895