PHP переменные сайта по умолчанию - PullRequest
1 голос
/ 22 ноября 2011

Я пытаюсь найти лучший способ использования переменных по умолчанию и переопределить их, если через URL передается $ _GET. Прямо сейчас у меня есть только два, но я буду добавлять больше по мере разработки сайта. Есть ли лучший способ?

Я использую define , чтобы определить переменную, и isset , чтобы определить, установлена ​​ли переменная и не равна ли NULL.

define("THEME", "atom");
define("VERSION", "1.00");

if(isset($_GET["theme"]))
{
    $theme = $_GET["theme"];
} else
{
    $theme = THEME;
}
if(isset($_GET["version"]))
{
    $version = $_GET["version"];
} else
{
    $version = VERSION;
}

UPDATE Я решил следующее. Я храню настройки своего сайта в settings.php:

$settings = array();
$settings['theme'] = 'default';

Затем я включаю этот файл, использую троичный оператор, а затем определяю переменную:

include_once('settings.php');

$theme = (isset($_GET["theme"])) ? $_GET["theme"] : $settings['theme'];
define("THEME", $theme);

Ответы [ 4 ]

3 голосов
/ 22 ноября 2011

Вы можете использовать троичные операторы, чтобы уменьшить ваш набор текста.

$theme = (isset($_GET["theme"])) ? $_GET["theme"] : THEME;
$version= (isset($_GET["version"])) ? $_GET["version"] : VERSION;
2 голосов
/ 22 ноября 2011

Я бы сделал это по-другому.

//$theme = config('default.theme');
//$version = config('default.theme_version');
// or
$theme = 'default';
$version = '1.00';

if(isset($_GET["theme"]) AND is_valid_theme($_GET['theme']))
{
    $theme = $_GET["theme"];
}

if(isset($_GET["version"]) AND is_valid_version($_GET['version']))
{
    $version = $_GET["version"];
}

define("THEME", $theme);
define("VERSION", $version);
1 голос
/ 22 ноября 2011

Вы всегда можете сделать что-то подобное:

$defaults = array(
    "theme" => "atom",
    "version" => "1.00"
);

$parameters = array_merge($defaults, $_GET);
extract($parameters);

Сначала я установил ассоциативный массив для значений по умолчанию.Затем я объединяю его с массивом $_GET, используя array_merge.Поскольку я упоминаю $_GET в качестве второго параметра, он переопределит значения, если они существуют.Таким образом, вы получите ассоциативный массив параметров.Если вы хотите использовать их в качестве локальных переменных, вы можете использовать extract.

0 голосов
/ 22 ноября 2011

Я бы использовал здесь или switch, или троичное выражение для ясности:

define("THEME", "atom");
define("VERSION", "1.00");

isset($_GET['theme'])   ? $theme = $_GET['theme']   : $theme = THEME;
isset($_GET['version']) ? $theme = $_GET['version'] : $theme = VERSION;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...