いくつかの特定の結果を得るために変数のさまざまなグループを操作する簡単なテスト ケースを書いていますが、何が間違っているかを確認するには「第三の目」が必要です。以下に示すように、期待する結果が得られません。
Sample Code:
$this->_default['method'] = 'index';
// Input-
// Group one var Option:
$pMethod = 'mission';
$arg1 = 'NULL';
$arg2 = 'NULL';
$arg3 = 'NULL';
// Group two var Option:
$pMethod = 'mission-statements-p_2';;
$arg1 = 'NULL';
$arg2 = 'NULL';
$arg3 = 'NULL';
// Group three var Option:
$pMethod = 'mission';
$arg1 = 'mission-statements-p_2';
$arg2 = 'NULL';
$arg3 = 'NULL';
if ($pMethod && $pMethod !== $this->_default['method'])
{
$find = 'p_';
$pos1 = strpos($pMethod, $find);
$pos2 = strpos($arg1, $find);
if ($pos1 !== false)
{
list($arg1,$arg2)= explode("-p_",$pMethod);
$method = 'page';
$arg1 = !empty($arg1) ? $arg1 : NULL;
$arg2 = !empty($arg2) ? $arg2 : NULL;
$arg3 = NULL;
}
else if ($pos1 === false && $pos2 !== false)
{
list($arg2,$arg3)= explode("-p_",$arg1);
$method = 'page';
$arg1 = $pMethod;
$arg2 = !empty($arg2) ? $arg2 : NULL;
$arg3 = !empty($arg3) ? $arg3 : NULL;
}
}
else
{
$method = $pMethod;
$arg1 = !empty($arg1) ? $arg1 : NULL;
$arg2 = !empty($arg2) ? $arg2 : NULL;
$arg3 = NULL;
}
// The expecting output results should be:
// Group one var Option: no changes
// Group two var Option:
$pMethod = 'page';
$arg1 = 'mission-statements';
$arg2 = 2;
$arg3 = 'NULL';
// Group three var Option:
$pMethod = 'page';
$arg1 = 'mission';
$arg2 = 'mission-statements';
$arg3 = 2;