我可以知道吗...有一种最好的方法来做这个逻辑,而不是我到目前为止尝试过的吗?
这是我的代码......
//------------ Check code search bar form submission ---------------//
if ( isset( $_POST['code_search_submitted'])) {
if ( isset( $_POST['searchCode']) && !empty( $_POST['searchText'])) {
if (is_numeric( $_POST['searchText']) && (strlen($_POST['searchText']) == 4)) {
$searchCode = $_POST['searchCode'];
if ( $searchCode == 1 ) {
$_SESSION['searchCode'] = 'TutorCode';
} elseif ( $searchCode == 2 ) {
$_SESSION['searchCode'] = 'InstituteCode';
}
$_SESSION['searchText'] = $_POST['searchText'];
} else {
$searchingError= 'Ennter four digits for code!';
echo '<script type="text/javascript">';
echo "alert('" . $searchingError . "')";
echo "</script>";
}
$url = BASE_URL . 'search/searching.php'; // Define the URL:
ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.
} else {
$searchingError= 'Enter Tutor or Institute Code!';
echo '<script type="text/javascript">';
echo "alert('" . $searchingError . "')";
echo "</script>";
}
} //---- Check code search bar form submission ----//
非常感谢任何评论...
谢谢......答案 0 :(得分:2)
OMG!是!这是我所见过的最好的逻辑!
答案 1 :(得分:0)
我不知道这是否符合您的要求,但我认为您可以阅读Steve McConnell撰写的“Code Complete”一书。任何必须理解这些代码的人都必须非常非常难以理解其意图,并且深度嵌套的逻辑语句使得很难看到正在发生的事情。
首先,正如@ yes123所说,缩进有帮助。
其次,评论会很好。
第三,降低复杂性确实会有所帮助。例如,而不是
if ( isset( $_POST['code_search_submitted'])) {
你可能会说: if(isValidSearch($ _ POST)){
}
if ( isCodeSearch($_POST)) {
将post var的检查包装到一个单独的函数中。
接下来,您可以将IF语句的内部主体包装到函数中 - 例如,replace if(is_numeric($ _POST ['searchText'])&amp;&amp;(strlen($ _ POST ['searchText'])== 4)){
$searchCode = $_POST['searchCode'];
if ( $searchCode == 1 ) {
$_SESSION['searchCode'] = 'TutorCode';
} elseif ( $searchCode == 2 ) {
$_SESSION['searchCode'] = 'InstituteCode';
}
$_SESSION['searchText'] = $_POST['searchText'];
}
与
if (isValidSearch($_POST)) {
handleSearch($POST)
}
接下来,我建议您将应用程序中的业务逻辑与显示逻辑分开 - 将HTML语句包装在业务逻辑中(例如Javascript错误)使其难以维护。考虑一个MVC框架。这也适用于将业务逻辑与应用程序逻辑分离(例如输出缓冲) - 对于非平凡的应用程序,您希望能够修改业务逻辑而不必担心破坏应用程序逻辑,反之亦然。您的示例代码表明业务逻辑的简单更改(例如添加新类型的搜索)很容易导致某人忘记重新设置输出缓冲区...