Как стать автором
Обновить
14
0
Кирилл @zarincheg

Пользователь

Отправить сообщение
Кидать то хорошо, если сам. А если это Fatal Error, то как исключение его не обработаешь, потому что это не исключение )
использование VPS или полноценного сервера решает эти архаичные проблемы.
Эм… это же просто подстановки. Да и PDO уже не первый день существует, если конечно речь о нем.
Даже боюсь спрашивать что плохого в плейсхолдерах))
Но причем тут ОРМ, вьюхи и прочее описаное. Речь ведь всего лишь о документах и некотрой динамической логике во время их создания…
Понятненько…
Да в чем усложнение то? Просто отдельные объекты со своим поведением, котроые ни от кого не зависят и от них тоже никто не зависит. Передали в конструктор — хорошо, используем. Не передали — ну и ладно, просто создаем документ.

Да и вообще любая модификация архитектуры требует определенных рефакторингов, это часть процесса разработки, которая как раз и позволяет не прибегать к костылям, мусору и копипасте.
При необходимости внесения изменений в логику создания документа(ов) нужно будет только добавить новый класс-мутатор в систему и всего делов.
Я это к тому, что затраты не такие и большие на внедрение данного решения… ладно.
Ну так кстати говоря 30 класс это вобщем-то не много и современные IDE вполне безболезненно справились бы с изменением сигнатуры конструкторов.
То есть проблема в том, что уже существует большая система и затраты на такой рефакторинг слишком велики?
Лучше выше порог вхождения, чем засраная говнокодом система ;)
Да, понятно что сам Document не используется на прямую. Я просто о сути. Так вот, я думаю что поскольку объект описывает документ, то имеет смысл логику создания документа завернуть в конструктор. То есть после
$doc = new Prikaz();

Мы уже получаем документ и работаем с этим объектм, без вызова дополнительного метода. А поскольку у нас предполагается возможность вносить какие-либо модификации и/или предварительные расчеты в процессе его создания, то можно передвать в конструктор объект-мутатор (так оно кажется назвается =) ), который будет уметь работать с определенным типом документа(-ов).
Только нужно место, где будет происходить определение того какие мутаторы использовать. Таким образом просто меняем объеткы в зависимости от ситуации и документы нужным нам образом модифицируются или еще какието действия производятся в процессе создания.
А как у вас создается новый документ?
$doc = new Document();
$doc->create();

Так?
Вообще конечно такие ситуации в принципе печаль. Но так да, костыли и хаки.
А почему бы не унаследовать класс, от того, поведение которого мы хотим изменить и использовать уже дочерний?
Неплохо, попробуем )
А физический объем данных каков?
А с какими объемами данных приходилось работать используя эту субд?
Кстати саму скорость серализации кажется не замеряли, не очень важно было на тот момент.
Однажды приходилось использовать bson для хранения очередей сообщений. Так же стоял вопрос выборе алгоритма сериализации. И вот что получалось:

Тесты проводились на массиве в 100к элементов размером ~150 байт. Оказалось, что json занимает на ~800kb меньше, чем bson. Однако скорость парсинга bson’a почти в 2.2 раза выше.
Причем разница в размере насколько помню растет с ростом объема данных.

Ниже показатели:
время парсинга (микросекунды):
json: 0.498
bson: 0.213

размеры(байты):
json: 14 688 891
bson: 15 488 895

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность