Есть ли более чистый способ написать это, избегая включает - PullRequest
1 голос
/ 30 декабря 2011

Я пишу проект на php, который в основном даст мне веб-страницу со ссылками на такие вещи, как:

  • страница, содержащая мои любимые видео на YouTube, хранящиеся в mysql db
  • страница со всеми моими любимыми играми
  • и т. д.

Все будет вставлено непосредственно в веб-страницу, а не в ссылку на сайт.

Чтобы упростить этоЯ сделал основной шаблон «index.php», а затем, используя $_GET, передаю страницы и другую информацию в шаблон, который затем обрабатывается скриптом проверки страницы, который выполняет несколько операций if, чтобы определить, какой php-скрипт загрузить.на веб-сайт.

Где мой вопрос заключается в том, какой предпочтительный метод загрузки этих сценариев на веб-сайт, так как мой текущий метод

if ($_GET["page"] == "videos"){
    include ("dynapage/scripts/videos/videos.php");
}

if ($_GET["page"] == "music"){
    include ("dynapage/scripts/music/music.php");
}

т. д.

Использует включает в себя включаетДобавление этого кода в мой шаблон - хорошая вещь, или есть лучший способ, который вы можете предложить?

примечание: проверки для isset уже включены в проверки и дополнительныеPBS доступны по запросу.

Ответы [ 3 ]

6 голосов
/ 30 декабря 2011

Используйте массив, который имеет значение $_GET["page"] в качестве ключа и имя файла php в качестве значения.Затем вам нужно только проверить, находится ли он внутри массива, и если да, включить его.Затем вы записываете значения в массив вместо того, чтобы писать множество предложений if.

В следующем примере кода это показано, кроме того, у него есть функция загрузки страницы, потому что включенный скрипт не устанавливает переменные вконтекст, в который он включается случайно.

$pages = array(
    'videos' => 'videos/videos.php',
    'music' => 'music/music.php',
);

/**
 * include a page template
 */
function load_page(array $pages, $page, $path = 'dynapage/scripts')
{
    if (isset($pages[$page])) return;
    include ($path.'/'.$pages[$page]);
}

if (isset($_GET['page']))
{
    load_page($pages, $_GET['page']);
}
2 голосов
/ 30 декабря 2011

Может быть, как-то так:

$config = array(
    'videos' => 'dynapage/scripts/videos/videos.php',
    'music' => 'dynapage/scripts/music/music.php'
);

if(isset($config[$_GET['page']])) {
     include($config[$_GET['page']]);
}

немного лучше, чем писать много предложений if (;

0 голосов
/ 30 декабря 2011

Похоже, вы можете просто сделать:

if( file_exists($fn = "dynapage/scripts/".$_GET['page']."/".$_GET['page'].".php"))
    include($fn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...