То есть можно прописать в свой основном composer.json репозиторий типа "path" и прописать там путь к папке с твоей библиотекой. Таким образом комит, пуш, создание релиза и composer update на локальном делать не придется, изменения в библиотеке сразу будут и в основном проекте.
Обосновать очень просто: "я знаю php лучше остальных языков, следовательно реализую проект быстрее". Выбор любой другой технологии можно обосновать так же.
Делаешь папку src и public, в public кладешь index.php, а все остальное в src.
В конфигурации сервера в качестве папки, где лежит сайт, указываешь папку public.
Из файла index.php подключаешь все файлы как __DIR__ . '/../src/нужныйфайk.php'.
Прям не блокируя поток выполнения при чтении файла стандартными средствами ты не сможешь, но можно просто читать файл небольшими кусочками, чтобы блокировать поток не на долго.
SELECT
artikul,
ANY_VALUE(name) name,
ANY_VALUE(price) price,
ANY_VALUE(kod) kod,
COUNT(CASE WHEN sklad="Алматы" THEN sklad END) ostatok_almaty,
COUNT(CASE WHEN sklad="Нур-Султан" THEN sklad END) ostatok_nursultan
FROM `tablename`
GROUP BY artikul;
strlen считает не количество символов, а количество байт в строке. В кодировке UTF-8 же некоторые символы представлены 2, 3 или даже 4мя байтами. Чтобы проверить количество именно символов в нужной кодировке, используй mb_strlen($x[0], 'UTF-8')
Пост-запросы передаются браузером только при сабмите формы, через тег a это сделать никак нельзя.
Но можно имитировать, создав невидимую форму со хидден инпутом, а кнопку submit стилизовать под ссылку в css, убрать там бордер, бекграунд, добавить колор и текст-декорейшн, и т.д.
Потому что типизированное свойство не инициализировано. Оно int и не может принять значение null, как не типизированные. Добавь ему дефолтное значение и все сработает))