Захаров Александр: эта библиотека https://github.com/vlucas/phpdotenv с помощью которой яхраню настройки проекта, также умеет делать эти переменные еще и в массив $_SERVER вот он в моем случае всегда существует и можно из него выдирать необходимые мне настройки и забить на массив $_ENV с которым такие хитрости
Захаров Александр: вот например лог, 3 option посылает браузер для проверки и 3 post потом посылает, и вот видно что переменная в одном случае имеет значение пусто, из-за этого файл не может подключиться и выходит ошибка 500
[2016-08-26 10:59:21] MainLog.WARNING: =/= [] []
[2016-08-26 10:59:21] MainLog.WARNING: =/= [] []
[2016-08-26 10:59:21] MainLog.WARNING: == [] []
[2016-08-26 10:59:21] MainLog.WARNING: =/= [] []
[2016-08-26 10:59:21] MainLog.WARNING: =/= [] []
[2016-08-26 10:59:21] MainLog.WARNING: =/= [] []
Захаров Александр: при инициализации приложения в самом конце подключался файл с маршрутизацией вот таким кодом require_once $_SERVER['DOCUMENT_ROOT'] . getenv('PATH_SHORT_ROOT') . 'app/Routes.php';
дак вот переменная getenv('PATH_SHORT_ROOT') один раз из нескольких (сейчас вот при каждом обновлении страницы через CORS уходит одновременно 3 запроса к одному и тому же ресурсу через post)
и с завидной регулярностью или POST или OPTION возвращает ошибку 500, потому что действительно проблема в коде, getenv() возвращает пусто, хотя в остальных случаях срабатывает нормально
вот сейчас гадаю как же починить получение этой переменной, ведь если ее нет то скорее всего и остальные настройки из .env файла тоже не считались, но причина почему так пока ускользает от меня
да в вернувшихся заголовках нет Access-Control-Allow-Origin поэтому браузер и ругается, в ответ приходит ошибка 500 Internal Server Error
но код один и тот же и как это в первый раз прошло а второй нет, или даже иногда ведь оба раза проходит, мистика какая-то
1. Поле id - общий номер заказа в системе, его каждый участник сможет называть чтобы моги общаться заказчик и исполнитель
2. Поля customer_internal_id и supplier_internal_id - внутренние номера заказов внутри каждого проекта customer_project_id, supplier_project_id чтобы внутри проекта сотрудники могли общаться по своим внутренним номерам (короткие, нумерация по порядку), а не по общим (т.к. они будут длинные и будут скакать)
3. Уникальные составные поля не дадут добавить запись с одинаковым внутренним номером для одного проекта
ну и осталось сделать таблицу для всех проектов где хранить номер проекта и последний номер заказа, чтобы к нему прибавлять единицу и обновлять номера в общем заказе
Ну да как вариант, только как отследить чтобы нечаянно две заявки не получили одинаковый номер. Если только этому полю поставить UNIQUE тогда ругаться хоть будет если что и можно будет повторить попытку узнать следующий номер и внести изменение
начал приводить код к PSR-2, потихоньку избавляюсь от статики (но пока один магический класс оставил, курил DI но так и не вкурил до конца как его использовать)
ООП для меня темный лес (( все пытался в нем разобраться но также как со статикой в интернете мало подробных инструкций, вот сейчас пришло осознание что пора переходить на ООП и прочие радости.
Что-то данная тема себя исчерпала, ответом стал репозиторий на GitHub где собственно я буду продолжать отвечать на свой вопрос итогом будет готовый скелет для будущих проектов.
Уважаемый Антон Шаманов можем мы с вами перейти на общение в скайпе например? Хочу попросить вас помочь мне с этим скелетом.
Потом этот скелет станет своеобразным мануалом, хочу там все подробно закомментировать. чтобы было доступно понятно зачем тут такой-то код и что он делает (для других таких же новичков как я, которые пытаются понять логику работы).
Антон Шаманов: крутооо )) вот только вы пошли в дебри, я это написал чисто как шаблон, я не буду проект писать прям уж так с нуля, например для роута будет использоваться klein.php.
У меня проблема в определении структуры размещения файлов модулей и общения их с приложением и между собой. Та структура что я быстро накидал имеет право на жизнь? Вот что интересует в первую очередь, а вы уже уходите в написание кода.
По поводу статики, ООП ради ООП тоже не есть хорошо.
Антон Шаманов: вот разродился структурой файлов, скелет даже работает, можно запустить )) архив Доступ ко всем модулям через их фасады, чтобы всегда был один вход в модуль, при этом неважно находится модуль на этом же сервере или на другом, и даже неважно php это или уже написано все на perl допустим, за все это отвечает фасад модуля. Вот хочу чтобы проект был такого плана, чтобы легче было поддерживать все эти кубики
Антон Шаманов:
1. Чтобы точка входа как внутри так и снаружи была одна, хотя да, сейчас взглянул еще раз и действительно контроллер фасадом лишний, спасибо
2. Да это понятно, вот поэтому сейчас проект из себя представляет сборище просто классов, скорость конечно скоростью но сейчас задумались о расширении штата программистов и поддерживать все это чудо будет адом
3. А вот тут такая загвоздка, допустим есть модуль который сейчас в принципе простой и лежит вместе с основным приложением, а например через год его дописывали дописывали а до такого надописывались что решили ну нафиг надо его на отдельный сервер перенести (хотя может быть так что просто сам модуль в корне неверный раз так распух и наверно тот кусок что стал большим должен стать отдельным модулем и уехать на луну)
Не ну если контроллер фасадов точно лишний, то фасад конкретного модуля вряд ли лишним будет, он как входная дверь для всего модуля, а там уже внутри пошел переход на конкретный метод. Вряд ли прям сильно упадет скорость от одного фасада?