Можно ли switch вынести в отдельный файл, учитывая то, что он находится в другом switch? Просто в основном файле получается слишком много кода, хотелось бы его пораскидать по разным файлам. include не работает. Пример:
<?php
//Тут получение JSON файла
switch ($data->type) {
//Если это уведомление для подтверждения адреса сервера...
case 'confirmation':
echo $confirmation_token;
break;
case 'message':
//switch ниже как раз и нужно вынести в отдельный файл, если использовать include, то не работает
switch($message) {
case 1: echo $q1; break;
case 2: echo $q2; break;
case 3: echo $q3; break;
}
break;
}
В том, чтобы вынести конструкцию switch в отдельный файл и включить ее в с помощью include нет никакой сложности. Проблема в том, что это в принципе плохой подход.
допустим ваш основной файл index.php:
$data = ['type' => 'message'];
$message = 2;
switch($data['type']){
case 'confirmation': echo $confirmation_token; break;
case 'message':.
include "./switch_messages.php";
break;
}
и дополнительный файл switch_messages.php следующего вида:
<?php
list($q1, $q2, $q3) = ['q1 value', 'q2 value', 'q3 value'];
switch($message){
case 1 : echo $q1; break;
case 2 : echo $q2; break;
case 3 : echo $q3; break;
}
Вы, наверное, тут должны понимать, что последний switch можно представить в виде:
$data = [1 => $q1, 2 => $q2, 3 => $q3];
echo $data['message'];
и обойтись вообще без switch. Возможно, предварительно надо проверить наличие искомого ключа в массиве и т.п.
В комментариях, вам предлагается заменить include на вызов функции. Это куда более практичный и удобный способ и потребует не особо больше действий с вашей стороны. В таком случае код немного видоизменяется, но смысл остается тот же.
require_once("process_messages.php");
$data = ['type' => 'message'];
$message = 2;
switch($data['type']){
case 'confirmation': echo $confirmation_token; break;
case 'message':.
processMessage($message);
break;
}
где process_messages.php:
witch_messages.php` следующего вида:
<?php
function processMessage($message){
list($q1, $q2, $q3) = ['q1 value', 'q2 value', 'q3 value'];
switch($message){
case 1 : echo $q1; break;
case 2 : echo $q2; break;
case 3 : echo $q3; break;
}
}
в таком виде (процедурное программирование) код более удобен для поддержки, чего не скажешь про вариант с чистым include, где конечный php-файл собирается из разных кусков. Следующим этапом для вас должен стать переход от процедурного к объекто-ориентированному программированию, если это имеет смысл в данной задаче. ООП не панацея, но хорошее средство, использовать его везде где попало смысла тоже нет.
Легко. Делаем файл например "json_processor.php" В него запиливаем функцию а-ля:
function parse_json($data)
В тело функции все твои свичи. Затем вызываеш эту функцию. Вот и готово.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости