и тогда всё по канонам DI , разве нет?Нет. В данном случае у вас объекты-сущности, отражающие какой-то тип реальных объектов (документов, пользователей, деревьев, трусов - не суть), для их взаимодействия не нужно как-то показывать им друг на друга, все взаимодействия между ними могут быть прописаны в коде, использующем их в качестве независимых единиц (хороший пример - код в контроллере, если вы понимаете концепцию MVC). DI же передает [сервисные] объекты, без которых сам объект будет либо не функционален (например та же БД для модели типа Active Record), либо обслуживающий код будет часто повторяться и есть смысл вынести их взаимодействие в метод объекта (если лень), или создать объект взаимодействия (что правильнее), как например при проверке ролей и прав в RBAC/ACL, но тут я не вижу никаких к тому предпосылок.
параметры имеются, не пустые , валидные, готовый json выдающий ошибку.ну, как минимум "costSale":14.039999999999999 не соответствует ожидаемому типу double, который у вас флоат...
{"Error":"Недопустимое значение для параметров article, brand, suppliername, costsale, quantity. Параметры не могут быть пустыми"}ну так что не понятно? проверяйте что попадает в эти поля, очевидно что какая-то лажа с отправляемыми данными.
вопрос в увеличении степени автоматизации. где она максимальна?Только смотреть под стек, думаю что людей которые работали с большим количеством таких штук под разные стеки просто нет, ну или их количество крайне мало и не пересекается с активом тостера. Так что как минимум указание стека сильно поможет. Под ту же лару вояджер настраивается весьма гибко, но не умеет в сложно связанные сущности, только один-ко-многим с указанием справочника... Ну или я не так глубоко копал. Пользовался на простеньком проекте, где нужно было править странички, но что-то свое с редактированием мутить было лень. Ищите под свой стек, читайте доки, другого особо и не посоветуешь...
Выходит, что сканировать все файлы придется в любом случае?Файлы в папке лежат не физически, а привязаны через (условно) соответствия папка-файл, вышепредставленная последовательность - условное отображение, которое к физическому размещению файлов на диске никакого отношения не имеет. То есть чтобы знать что лежит в папке, программе надо от ОС получить список файлов из данной папки и упорядочить его по какому-то признаку (в вашем случае по имени). Без полного списка это естественно сделать невозможно.
Сначала key = 0 потом 1 потом 2 потом опять 1 О_оЧто вас смущает? Там же 2 цикла, закончился первый, начался второй с новым массивом. Что мешает просмотреть весь массив $aTabs таким же образом - загадка.
а необходимо, я так понимаю, убрать отступ у всех предыдущих.Если внимательно читать задачи
почему то одна строка вылазит из общей структурыто лишней работы можно избежать. Внимательнее надо быть.
а принтер, принтер нет, какой-то стандартный MicrosoftPrint хз что это такоеЭто виртуальный принтер, печать из которого идет в файл, его так же надо настраивать на тот формат "бумаги", который вы задали в mpdf. Ну, или если стоит задача именно на этом конкретном принтере добиться правильного вывода - поменять формат бумаги в mpdf на тот что стоИт в настройках принтера.
Колумб, между прочего, все-таки открыл АмерикуХотя плыл в Индию... Я как раз это имел в виду ))
Если серьёзно, я просто пытаюсь скорректировать направление дискуссии, в интересующую меня сторону.Так я уже спрашивал - в чем затык? Технически препятствий нет, архитектура нестандартная, но кого и когда это останавливало, если есть желание попробовать острых ощущений? ) Как я уже писал - единственный ваш обозначенный плюс -
очень просто вносить изменения - затрагивается только один слой - база данных, и минимальные или вообще никаких изменений на фронте., где заменив "база данных" на "язык бэкенда" вы получите то же самое, только в современной мете...
коенчно скажу - в бизнесе как и в жизни выживает не стабильный (сильнейший), а тот кто лучше приспасабливается (гибкий), адаптируется к изменениям.Стабильность в бизнесе это не продавать всегда одно и то же, а стабильно выдавать результат с предсказуемой точностью, очевидно. Это к вопросу о Всё говорит о том, что нам может быть когда-то капец, а может и нет.. А все словесные выкрутасы вокруг манипулятивных техник и прочего - ну поупражняйтесь, я конкретно написал почему это не выгодно. Вам кажется что это нюансы и надуманные проблемы - ваше дело. Да, я выступаю с позиции "умный дядя говорит", но это обоснованная практикой позиция, я видел как выбранная архитектура влияет на будущее проекта, как тупо не хватает спецов чтобы сдать проект в рамках сроков, как хреново бд ложится в гит/меркуриал/свн, и еще много веселого... Вы можете спокойно проигнорировать все что я говорю и сделать по своему. И вы обязательно в той или иной мере наступите на вышеописанные грабли, которые тут, на берегу, вам кажутся пальмами с финиками, ну или по крайней мере незначительной растительностью на пути к фантастическим перспективам (нет).
Аргументация про карму, или вида "неделай так, потому что так умный дядя говорит"Аргументация была в другом, но вам не понравилось именно то что я рекомендовал не делать фигни. Ну ок, вы раскусили мои хитрые манипуляции, теперь можете продолжить заниматься фигней...
Задумка ясна, а цель данного танцевания не очень, есть конкретная задача, решаемая автором вопроса, или это размышления в вакууме? Так то хранилищ встроенных в язык особо и не много, и все они не удовлетворяют задаче. Возможно подойдут внешние хранилища, но без контекста не вижу смысл гадать...