我正在尝试使用最佳方式来使用默认变量,并在通过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;
}
更新 我决定以下几点。我将我的网站设置存储在settings.php中:
$settings = array();
$settings['theme'] = 'default';
然后我包含该文件,使用三元运算符,然后定义变量:
include_once('settings.php');
$theme = (isset($_GET["theme"])) ? $_GET["theme"] : $settings['theme'];
define("THEME", $theme);
答案 0 :(得分:3)
您可以使用三元运算符来减少输入。
$theme = (isset($_GET["theme"])) ? $_GET["theme"] : THEME;
$version= (isset($_GET["version"])) ? $_GET["version"] : VERSION;
答案 1 :(得分:2)
我会这样做。
//$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);
答案 2 :(得分:1)
您可以随时执行以下操作:
$defaults = array(
"theme" => "atom",
"version" => "1.00"
);
$parameters = array_merge($defaults, $_GET);
extract($parameters);
我首先为默认值设置关联数组。然后我使用array_merge
将其与$_GET
数组合并。由于我提到$_GET
作为第二个参数,它将覆盖值(如果它们存在)。这样,您就可以获得一个关联的参数数组。如果要将它们用作局部变量,可以使用extract
。
答案 3 :(得分:0)
为了清楚起见,我会在这里使用switch
或三元语句:
define("THEME", "atom");
define("VERSION", "1.00");
isset($_GET['theme']) ? $theme = $_GET['theme'] : $theme = THEME;
isset($_GET['version']) ? $theme = $_GET['version'] : $theme = VERSION;
每当我知道我可能稍后扩展这样的逻辑时,我通常采用三元方法。保持一切可读性。