可以将 php 变量命名为 $_xxx 吗?
is it accepted to name a php varible like $_xxx?
我正在构建一个站点,我包含了一个名为 "settings.php" 的设置文件,
我认为通过名称注册一个全局变量看起来很酷:$_SETTINGS
作为站点设置的数组(db_name、db_pass...等)
如此:
<?php
$_SETTINGS = array();
$_SETTINGS['DB_HOSTNAME']= 'localhost';
$_SETTINGS['DB_NAME'] = 'db_test';
$_SETTINGS['DB_USERNAME'] = 'db_user';
$_SETTINGS['DB_PASSWORD'] = 'p422w0rd';
?>
然后访问子页面上的这些设置...通过访问 $_SETTINGS...
这段代码工作得很好,
但我很好奇 php 程序员社区是否可以接受将您自己的变量命名为 $_ ?
或者我的代码被认为是糟糕的设计?
谢谢
你可以这样做,但我不推荐它,因为 superglobal 变量也有这个 pattern/prefix 例如$_SERVER
、$_SESSION
、$_GET
这可能有点令人困惑。
但是根据manual。技术你可以做到:
A valid variable name starts with a letter or underscore, followed by any number of letters, numbers, or underscores. As a regular expression, it would be expressed thus: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
最后,你做什么是个人喜好。
我个人认为这是个坏主意。更好的解决方案是创建单例 class 在整个应用程序中提供配置。
像这样:
class MyConfigProvider
{
private $config = array();
private static $instance = null;
public static function getInstance()
{
if (self::$instance === null)
self::$instance = new self();
return self::$instance;
}
private function __construct(){}
public function getConfig()
{
return $this->config;
}
public function setConfig(array $config)
{
$this->config = $config;
}
}
您可以通过
在应用的所有位置获取配置
$config = MyConfigProvier::getInstance()->getConfig();
这不是最好的解决方案,但它易于实施并且有效
我正在构建一个站点,我包含了一个名为 "settings.php" 的设置文件, 我认为通过名称注册一个全局变量看起来很酷:$_SETTINGS 作为站点设置的数组(db_name、db_pass...等) 如此:
<?php
$_SETTINGS = array();
$_SETTINGS['DB_HOSTNAME']= 'localhost';
$_SETTINGS['DB_NAME'] = 'db_test';
$_SETTINGS['DB_USERNAME'] = 'db_user';
$_SETTINGS['DB_PASSWORD'] = 'p422w0rd';
?>
然后访问子页面上的这些设置...通过访问 $_SETTINGS...
这段代码工作得很好, 但我很好奇 php 程序员社区是否可以接受将您自己的变量命名为 $_ ? 或者我的代码被认为是糟糕的设计?
谢谢
你可以这样做,但我不推荐它,因为 superglobal 变量也有这个 pattern/prefix 例如$_SERVER
、$_SESSION
、$_GET
这可能有点令人困惑。
但是根据manual。技术你可以做到:
A valid variable name starts with a letter or underscore, followed by any number of letters, numbers, or underscores. As a regular expression, it would be expressed thus: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
最后,你做什么是个人喜好。
我个人认为这是个坏主意。更好的解决方案是创建单例 class 在整个应用程序中提供配置。
像这样:
class MyConfigProvider
{
private $config = array();
private static $instance = null;
public static function getInstance()
{
if (self::$instance === null)
self::$instance = new self();
return self::$instance;
}
private function __construct(){}
public function getConfig()
{
return $this->config;
}
public function setConfig(array $config)
{
$this->config = $config;
}
}
您可以通过
在应用的所有位置获取配置$config = MyConfigProvier::getInstance()->getConfig();
这不是最好的解决方案,但它易于实施并且有效