PHP-CLI 5.4 - 转到替代方案
PHP-CLI 5.4 - GOTO Alternative
我正在开发一个 PHP-CLI (PHP 5.4+) 应用程序,我不得不在需要邪恶 goto 的地方分手。
示例:
<?PHP
// I use PHP League CLImate and I load it here
/*
*
* Many lines of different code and output
*
*/
MAIN_MENU:
// Some checks which will affect menu below
$climate->clear();
$climate->white("1. Eat sandwich");
$climate->white("2. Eat apple");
$input = $climate->white()->input('Lets go and:');
$input->accept([1, 2]);
$option = $input->prompt();
switch ($option) {
case 1:
// Eat sandwich and show output
// Show some more output
// Pause a bit
GOTO MAIN_MENU;
case 2:
// Eat apple and show output
// Show some more output
// Pause a bit
GOTO MAIN_MENU;
}
我觉得我有使用邪恶的理由goto
。不幸的是,从 PHP 5.3 开始,goto
已经不存在了。 有 GOTO,但是还有其他方法吗?
我需要使用 PHP 5.4+ 因为 PHP 5.4 是 PHPLeague CLImate 支持的最旧的版本。
所以,基本上,它为用户提供了一些选项,用户选择一个选项,它完成任务,然后它应该返回主菜单。
您可以使用 continue
语句模拟此行为:
while (true) {
// Some checks which will affect menu below
$climate->clear();
$climate->white("1. Eat sandwich");
$climate->white("2. Eat apple");
$input = $climate->white()->input('Lets go and:');
$input->accept([1, 2]);
switch ($input->prompt()) {
case 1:
// Eat sandwich and show output
// Show some more output
// Pause a bit
continue 2;
case 2:
// Eat apple and show output
// Show some more output
// Pause a bit
continue 2;
}
}
备案,goto was added in 5.3,未删除。
所以它工作得很好并且被许多项目使用(主要是解析器和状态机)。
我正在开发一个 PHP-CLI (PHP 5.4+) 应用程序,我不得不在需要邪恶 goto 的地方分手。
示例:
<?PHP
// I use PHP League CLImate and I load it here
/*
*
* Many lines of different code and output
*
*/
MAIN_MENU:
// Some checks which will affect menu below
$climate->clear();
$climate->white("1. Eat sandwich");
$climate->white("2. Eat apple");
$input = $climate->white()->input('Lets go and:');
$input->accept([1, 2]);
$option = $input->prompt();
switch ($option) {
case 1:
// Eat sandwich and show output
// Show some more output
// Pause a bit
GOTO MAIN_MENU;
case 2:
// Eat apple and show output
// Show some more output
// Pause a bit
GOTO MAIN_MENU;
}
我觉得我有使用邪恶的理由 有 GOTO,但是还有其他方法吗? goto
。不幸的是,从 PHP 5.3 开始,goto
已经不存在了。
我需要使用 PHP 5.4+ 因为 PHP 5.4 是 PHPLeague CLImate 支持的最旧的版本。
所以,基本上,它为用户提供了一些选项,用户选择一个选项,它完成任务,然后它应该返回主菜单。
您可以使用 continue
语句模拟此行为:
while (true) {
// Some checks which will affect menu below
$climate->clear();
$climate->white("1. Eat sandwich");
$climate->white("2. Eat apple");
$input = $climate->white()->input('Lets go and:');
$input->accept([1, 2]);
switch ($input->prompt()) {
case 1:
// Eat sandwich and show output
// Show some more output
// Pause a bit
continue 2;
case 2:
// Eat apple and show output
// Show some more output
// Pause a bit
continue 2;
}
}
备案,goto was added in 5.3,未删除。
所以它工作得很好并且被许多项目使用(主要是解析器和状态机)。