PHP默认的网站变量


PHP default website variables

我试图想出最好的方式来使用默认变量和覆盖他们,如果一个$_GET通过URL传递。现在,我只有两个,但随着网站的发展,我会增加更多。有没有更好的办法?

我使用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);

您可以使用三元操作符来减少键入。

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

我会用另一种方法。

//$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);

你可以这样做:

$defaults = array(
    "theme" => "atom",
    "version" => "1.00"
);
$parameters = array_merge($defaults, $_GET);
extract($parameters);

我首先为默认值设置了一个关联数组。然后我用array_merge将它与$_GET数组合并。由于我提到$_GET作为第二个参数,如果存在,它将覆盖这些值。这样,你就得到了一个参数的关联数组。如果您想将它们用作局部变量,您可以使用extract

为了清楚起见,我将使用switch或三元语句:

define("THEME", "atom");
define("VERSION", "1.00");
isset($_GET['theme'])   ? $theme = $_GET['theme']   : $theme = THEME;
isset($_GET['version']) ? $theme = $_GET['version'] : $theme = VERSION;

每当我知道我以后可能会像这样扩展一点逻辑时,我通常采用三元方法。