За последние 24 часа нас посетили 22473 программиста и 999 роботов. Сейчас ищут 638 программистов ...

Архитектура небольшого проекта

Тема в разделе "Прочие вопросы по PHP", создана пользователем drwhite1, 12 мар 2020.

  1. drwhite1

    drwhite1 Новичок

    С нами с:
    25 авг 2017
    Сообщения:
    4
    Симпатии:
    0
    Приветствую, камрады. Подскажите, как лучше сделать.
    Есть небольшое приложение app.php, которое принимает несколько гет-параметров и, в соответствии с ними, выполняет необходимые действия, а также отображает эти параметры в интерфейсе.

    Все вроде просто, но есть нюанс. При инициализации приложения в адресной строке никаких гет-параметров нет, следовательно, их надо взять из имеющегося текстового или JSON файла, распарсить, создать гет-обработчики (?), задающие гет-параметры (без перезагрузки), подставить их значения в соответствующие поля формы, да еще вывести списки ссылок и кнопок, меняющих некоторые из этих параметров и добавляющих/удаляющих дополнительные параметры.

    Пример.

    Файл с параметрами
    Код (Text):
    1. type: sub0, rec: true, path: /path0, over: false
    2. type: sub2, rec: false, path: /path1, over: true
    3. type: sub9, rec: false, path: /path2, over: false
    Инициализация приложения.

    Создание неких гет-обработчиков, контролирующих гет-параметры.
    (значения по умолчанию берутся из первой строки файла с параметрами)

    Заполнение полей формы значениями по умолчанию
    (видимо, посредством гет-обработчиков)
    Type: [sub0], Rec: [true], Path: [/path0], Over: [false]
    (rec и over — чекбоксы, остальные текстовые)

    Вывод списка ссылок (собирает их, видимо, какой-то контроллер)
    sub0 | sub2 | sub9
    Каждая ссылка должна вести на app.php с параметрами из соответствующей строки файла и при этом отслеживать параметр type, чтобы быть активной или неактивной.
    sub0: app.php?type=sub0&rec=true&path=/path0&over=true
    sub2: app.php?type=sub2&rec=false&path=/path1&over=true
    sub9: app.php?type=sub9&rec=false&path=/path2&over=false
    (При переходе по ссылке, поля формы обновляются уже в соответствии с имеющимися параметрами.)

    И в конце должны быть две кнопки/ссылки, одна из которых ведет как и ссылка выше на app.php, только уже не с параметрами из файла, а со значениями полей формы (потому что они могут быть изменены пользователем) и если есть гет-параметр action, то убирает его, а вторая делает то же самое, только наоборот добавляет гет-параметр action.

    Кнопка/ссылка [Set params]
    app.php?type=sub190&rec=true&path=/path8000&over=false


    Кнопка/ссылка [Process]
    app.php?type=sub190&rec=true&path=/path8000&over=false&action=process

    Проблема в том, что при наличии такого интерфейса приходится постоянно просеивать адресную строку, фильтровать ссылки и дублировать названия параметров в разных местах. Это, конечно, ужасно и скорее всего давно есть грамотные решения, и, возможно, не огромные фреймворки, а что-то более компактное и компонентно-ориентированное. Кто что подскажет?

    PS. Хотя в похожем приложении на JS предложили именно один из трех фреймворков.
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    нет ничего проще хранить данные в файле в формате json
    создайте файл
    PHP:
    1. <?php
    2. return '[
    3. {"type":"sub0","rec":true,"path":"\\/path0","over":false},
    4. {"type":"sub2","rec":false,"path":"\\/path1","over":true},
    5. {"type":"sub9","rec":false,"path":"\\/path2","over":false}
    6. ]';

    и запустите такой код
    PHP:
    1. <?php
    2. echo '<pre>';
    3. print_r(json_decode(include('json_default.php'), true));
    4. echo '</pre>';
    всё остальное вообще нихрена не понятно
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Да, не оч. понятно. Но это похоже на роутинг при помощи таблицы с объединением отдельного «роута» с проч. данными в одной записи.

    Вот, например: http://g09.ru/ Список на главной расширяется автоматически, когда я добавляю соотв. запись в БД, причем, чтобы в нем не отображались все подряд устанавливаемые модули, был добавлен флаг видимости в списке, который учитывается при отображении списка.

    Демка базируется на этой модели данных и ее расширении, позволяющем контролировать во фронте не только параметры пути, но и разрешать/запрещать GET-параметр p, причем отдельно для одно- и двухкомпонентных путей, а также явно прописывать номер/имя обработчика. Там в комментах как раз сейчас обсуждают это расширение.
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.822
    Симпатии:
    736
    Адрес:
    Татарстан
    Ничего не понятно если честно...

    Вы роутинг пишите? В чем проблема?
    Не пытайтесь нас в дебри конкретного решения завести - объясните "на пальцах" что вы хотите получит в итоге, в чем сейчас проблема?

    Причем и код сам не показываете почемуто
     
    artoodetoo нравится это.