Можно ли 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)
В тело функции все твои свичи. Затем вызываеш эту функцию. Вот и готово.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Сразу предупреждаю, в С# я не понимаю но как я понял должно было бы быть так $hash = hash_hmac('sha256',$password,$salt,true);
Как реализовать чтобы при каждой новой итерации цикла с функцией ofstream менялось название файлаtxt
В чём проблема? Проясните пожалуйста нубуВ первый раз создаю многофайловый проект
Необходимо запустить дочерний процесс, вводить и выводить данные из него последовательноОднако, если дочерний процесс имеет цикл ввода,...