php - деление переключателей в разных файлах - PullRequest
3 голосов
/ 01 июля 2011

У меня есть php-файл, в котором я использую действительно очень длинный случай переключения.Я хочу разделить дела в разные файлы (сохранить логически связанные дела в 1 файле).

РЕДАКТИРОВАТЬ: Извините всех, это был мой код, который вызывал проблему.Случай с переключателем работал должным образом.

file -> a.php

echo "<br>RES = ".test(1);

function test($value) {
    switch($value) {
        case (1 || 2):
                include("b.php");
                            **return $temp;**
                break;

        default: echo "error";
                return 3;
                break;
    }
}

file -> b.php

switch($value) {

    case 1: echo "value is 1";
                    **$temp = 1;**
            return 1;
            break;

    case 2: echo "value is 2";
                    **$temp = 2;**
                    return 2;
                    break;
}

Как получить правильный результат?если регистр переключения b.php находится в файле .php, то все работает нормально. Любая идея / предложение о том, как это сделать?

Если я добавлю $ temp (жирные строки), то это сработает ...

Спасибо за помощь заранее.

С уважением

Ответы [ 3 ]

4 голосов
/ 01 июля 2011

Обновлен ответ на обновленный вопрос: измените «a.php» и добавьте префикс возврата перед «b.php»:

return include("b.php");

http://www.php.net/manual/en/function.include.php

Обработка возвратов: возможно выполнить оператор return () внутри включенный файл для прекращения обработка в этом файле и вернуться к сценарий, который вызвал это. Кроме того, это можно вернуть значения из включенные файлы. Вы можете взять значение из включенного вызова, как вы бы нормальная функция. Это не, однако, возможно при включении удаленных файлов если вывод удаленного файла имеет допустимые начальные и конечные теги PHP (как с любым локальным файлом). Вы можете объявить необходимые переменные в этих тегах и они будут введены в в какую бы точку файл не был включен.


просто включить () в ваших разделах case / break?

switch($var)
{
 case 1:
   include('case_1.php');
   break;
 case 2:
   include('case_2.php');
   break;
 default:
   include('case_default.php');
  break;
}
0 голосов
/ 01 июля 2011
switch($var)
{
    case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: //...
        include('case_' . $var . '.php');
        break;
    default:
        include('case_default.php');
        break;
}
0 голосов
/ 01 июля 2011

Это на самом деле то, что предложил Скузи (я даже оставил то же соглашение об именах), но улучшилось:

// list of files
$my_files = array(
    'a' => 'case_1.php',
    'b' => 'case_2.php',
    'c' => 'case_3.php',
    'd' => 'case_4.php',
);

// determine which one to load
if (array_key_exists($var, $my_files)) {
    include($my_files[$var]);
} else {
    include('case_default.php');
}

или даже короче;):

$f = array('a','b','c','d');
include((in_array($var,$f)?$var:'case_default').'.php');
...