Как правило, когда у вас много таких условий if / else, было бы более распространенным использовать вместо этого оператор switch
:
switch $currentLocation[2] {
case 'home' : $this->data['pageURL']=$currentLocation[2]; break;
case 'answers' : $this->data['pageURL']= $currentLocation[4]; break;
default: $this->data['pageURL']= $currentLocation[4]; break;
}
Это аккуратнее, чем куча elseif
блоков, хотя на самом деле это не намного меньше кода.
Однако в этом случае я бы сказал, что вы могли бы добиться лучших результатов, используя набор правил перезаписи. Вы не указали его, но, учитывая URL-адреса, которые вы описали, возможно, вы используете mod_rewrite (или аналогичный) в конфигурации вашего сервера, чтобы перенаправить «дружественный» URL на реальную страницу PHP?
Здесь я бы предложил работать. Используя набор правил mod_rewrite, вы можете заставить страницу PHP получать обычные $_GET
переменные.
mod_rewrite позволяет вам иметь URL-адреса, подобные /app/answers/detail/a_id/309
, но PHP-программа получит его, как если бы пользователь набрал app.php?page=answers§ion=detail&a_id=309
. Правила переписывания основаны на регулярных выражениях, и вы можете сделать их довольно сложными, чтобы учесть множество различных форматов URL.
Если вы реализуете это, вы, вероятно, можете отбросить всю работу, которую вы выполняете в программе, с помощью explode()
, а затем выбрать соответствующие биты URL и заменить все это примерно пятью строками в конфигурации вашего сервера ( .htaccess
).
Надеюсь, это поможет.