Артур Э., А я, вроде, и не предлагал оборачивать PDO во что-то пока нет необходимости. Ну и да, App тут тоже против SRP идёт. Но я отвечал автору вопроса с поправкой на выбранную архитектуру. Он изобретает свой Laravel, но можно было бы предложить ему изобрести свой Symfony :)
Макс Васильев, Почитайте про SOLID. Особенно про SRP. В идеале ваш App ничего не должен знать об устройстве класса для работы с БД. А значит иницализация БД не должна в App происходить.
То есть можно взять третий вариант и доделать его. Ну и если App нужна БД для работы, то нет никакого смысла принимать её в App::initDb() вместо конструктора.
hint000, Не хочу быть одним из тех, кто "УМВР", но хотелось бы конкретики про Bluetooth. Потому что я действительно не испытывал никаких проблем с Bluetooth устройствами в Linux за исключением ситуаций с некорректной конфигурацией самого Bluetooth и плохих модулей Bluetooth, к которым нет драйверов или требуется кривая фирмварь. Ещё я ловил баг с падением bluetoothd, но он был исправлен.
Единственная "серьёзная" проблема с которой я столкнулся - это то, что из коробки нигде (тот же Bluez) не предоставляется возможность прокидывать AVRCP команды в виде, например, эмуляции нажатия мультимедийных клавиш для переключения треков в плеере и т.п. В плане именно передачи звука все профили A2DP, Headset, Hands-free у меня замечательно работали и интегрировались с Pulseaudio в обе стороны (PC как передатчик и как приёмник).
Вот только уровень сигнала ожидаемый на линейном входе сильно выше, чем от микрофона. А в целом идея правильная.
Ну и плюс надо понимать, что принимающая сторона будет видеть это как "выход", а не "вход". Так что без определённых танцев с бубном заставить, скажем, какой-нибудь скайп использовать такой микрофон будет сложно.
miniven, Чтобы заметить разницу вам нужно будет за один запрос сотни или тысячи страниц вместо одной собирать.
Вы по-моему, немного не там в оптимизацию ударяетесь.
pokemapsinfo, XDebug - это отладчик для PHP.
Вместо того чтобы гадать, что происходит в вашем коде - запустите его с помощью отладчика и увидьте это своими глазами. Вы будете видеть содержимое переменных, сможете приостанавливать выполнение кода на любой строке чтобы понять как происходит выполнение.
Подробнее о его настройке и использовании можно найти как в его документации, так и в документациях IDE, в которых его использование сделано крайне удобным и простым - например PhpStorm.
URL, который вы получаете путём всех этих операций зависит от изначального URL страницы. А по-хорошему - не должен.
Если я правильно вас понял, то ваша задача - сгенерировать URL для того чтобы где-то вывести ссылку либо сделать переадресацию. Таким образом вы создаёте URL не основываясь на внутренних правилах приложения (таблица маршрутов), а на пользовательском вводе, который приходит от клиента. Это создаёт ряд потенциальных проблем (в том числе с безопасностью) и делает логику менее строгой.
Я бы рекомендовал раз вы не хотите прибегать к общепринятым решениям для роутинга, хотя бы сделать свой простой роутинг, где у вас для генерации маршрута будет использоваться только заданный вами шаблон адреса, а не пришедшие извне данные.
Например вы всегда точно знаете, что страница товаров для определённого города должна находиться по адресу /{city}/products. Следовательно формирование адреса должно происходить по принципу:
1. Взять заранее известный шаблон.
2. Подставить нужные параметры.
Таким образом что бы вам не прислал клиент - вы всегда сгенерируете один и тот же адрес.
UPD: Прошу прощения. В вашем коде не видно, что вы в итоге будете делать с полученными данными - поэтому мои утверждения выше могут и не иметь отношения к тому, что вы делаете.
Главное - когда будете генерировать новый URL - генерируйте его из заранее известного шаблона, а не производите замену строки полученной тут: $url = $_SERVER['REQUEST_URI'];
По идее, при необходимости использовать микрофон, ОС должна переключать наушники на использование профиля handset или handsfree с кодеком SBC или хуже. Не уверен, что aptX будет работать во время использования микрофона.
Евгений М, Вот поэтому я вам ничего конкретного и не советую. Пока сами для себя не определитесь с ключевыми требованиями и не придёте к нормальным практикам деплоя - все мои советы бесполезны.
Я вам могу написать про нормальную IDE, git и deployer - вы можете мне сказать, что всё это вам не нужно и я переусложняю. Это будет настолько же аргументированно как и то, что Filezilla "ещё хуже", чем WinSCP.
Так что формируйте список требований и исходите в выборе инструмента из них. Постепенно требования будут эволюционировать когда вы будете понимать, что текущая практика, которой вы пользуетесь имеет серьёзные минусы.
P.S. "Работа с Notepad++" - это не ключевое требование. С Notepad++ (и любым другим редактором) сможет работать любой софт, который следит за изменением файлов.
P.P.S. Хорошая IDE (типа PhpStorm, например) будет работать с FTP/SFTP без посредников в виде WinSCP/Filezilla.
Евгений М, Я вам ссылку дал на альтернативы, если интересно.
И да, связка не очень. Ну ничего, разок-два потеряете всю работу - задумаетесь о нормальном деплое и контроле версий.