Вы не можете сделать:
if ($var !== 'a' || !== 'b') ...
Вы должны сделать:
if ($var !== 'a' || $var !== 'b') ...
Если вы хотите очистить этот код, я бы предложил:
function active_view($content, $url, $view) {
if ($_GET['view'] == $view) {
return link($content, '#', 'active');
} else {
return link($content, $url);
}
}
function active_page_view() {
$args = func_get_args();
$content = array_shift($args);
$url = array_shift($args);
$page = array_shift($args);
if ($_GET['page'] == $page && !in_array($view, $args)) {
return link($content, '#', 'active');
} else {
return link($content, $url);
}
}
function link($content, $href, $class) {
$ret = '<a href="' . $href . '"';
if ($class) {
$ret .= ' class="' . $class . '"';
}
$ret .= '>' . $content . '</a>';
return $ret;
}
и тогда ваш код становится:
<li><?php echo active_page_view('Photos', '/?page=photos', 'photos', 'projects', 'forsale'); ?></li>
<li><?php echo active_view('Projects', '/?page=photos&view=projects', 'projects'); ?></li>
<li><?php echo active_view('For Sale', '/?page=photos&view=forsale', 'project'); ?></li>
Вышеуказанное является иллюстративным, а не окончательным и полным. Суть, которую я пытаюсь донести, заключается в том, что вы хотите привыкнуть использовать какой-то шаблонный механизм, даже если вы не используете библиотеку шаблонов (например, Smarty). Вы редко хотите встроить сложную логику в то, что в основном является представлением. Если вы используете библиотеку функций (или объектов) для создания разметки, это дает вам большой контроль над экранированием специальных символов, автоматической вставкой атрибутов, проверкой того, что вы вводите, или чем-то еще.
В этом примере вам, вероятно, понадобится структура данных, представляющая навигацию вашего сайта, в которую вы вводите текущую страницу, которая сравнивает ее со всеми записями при динамическом построении навигации и автоматически манипулирует ссылками. *