Как объединить два скрипта в один

88
09 января 2021, 15:10

Дано два скрипта к которым обращается javascript код клиента:

file1.php

$data = stripslashes(file_get_contents("php://input"));
$get_data = json_decode($data);
$value1 = $get_data->{'part_no'};

file2.php

$data = stripslashes(file_get_contents("php://input"));
$get_data = json_decode($data);
$value2 = $get_data->{'item_no'};

Вопрос: Какие "лучшие практики" существуют чтобы объединить эти два файла в один. Т.е. выяснять какой объект пришел и кудато перенапрвлять дальше.

Первое что приходит на ум это что-то типа: При помощи условий выяснять содержится ли имя ключа в пришедшем объекте и в соответствии с результатом отправлять дальше...

Answer 1

Чтобы создать единую точку входа, сначала тебе надо настроить сервер, чтобы он все запросы к файлам, которых не существует, перенаправлял на твой php-файл, который будет являться точкой входа в приложение. У каждого сервера свои способы как это сделать. Так ты сможешь обращаться к статике (css, js, картинки) без участия php-кода, и сможешь обрабатывать все запросы к динамической части приложения из одного места.

Для роутинга советую воспользоваться готовым пакетом, чтобы не строить велосипед, учитывая методы запросов, параметры в URL, заголовок Accept и другие вещи, которые уже учитаны в готовых пакетах. Например есть хороший пакет от Symfony.

Если же хочется во всем разобраться самому, то тебе нужно смотреть на суперглобальную переменную $_SERVER, в котором скорее всего будет лежать параметр REQUEST_URI. Этот параметр стоит проверить на матчинг с паттерном твоего ресурса, и совершать нужные вещи в зависимости от пришедшего запроса. Не забудь про методы запроса.

Почитай про REST.

И может быть посмотри в сторону готовых фреймворков (Laravel, Symfony, Yii), они дают большую базу готовых инструментов и помогают держаться в рамках стандартов разработки.

Answer 2

file.php

$data = file_get_contents("php://input");
$get_data = json_decode($data);
$value1 = $get_data->part_no ?? null;
$value2 = $get_data->item_no ?? null;
READ ALSO
Подгрузка постов ajax

Подгрузка постов ajax

Есть блоки, которые генерируются foreach по WP_QueryОграничил вывод до штук

108
Инициализация свойства класса

Инициализация свойства класса

У класса есть свойство $options - массив параметров, у которого должны быть значения по умолчанию

106
Запрос на изменение порядка в таблице местами

Запрос на изменение порядка в таблице местами

В выводе таблицы языков, на определенном языке можно нажать стрелку вверх, и тем самым поменять их порядок местами

107
Загрузка файла Laravel

Загрузка файла Laravel

Всем приветЕсть api и web интерфейсы в одном проекте Laravel

93