Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将php变量命名为$\u xxx?_Php_Variables_Naming Conventions - Fatal编程技术网

是否可以将php变量命名为$\u xxx?

是否可以将php变量命名为$\u xxx?,php,variables,naming-conventions,Php,Variables,Naming Conventions,我正在建立一个网站,我包括了一个名为“settings.php”的设置文件, 我认为用$u设置注册一个全局变量看起来很酷 作为一个站点设置数组(db\U名称、db\U通行证等) 因此: 然后访问子页面上的这些设置。。。通过访问$\u设置 这个代码运行得很好, 但我很好奇,php程序员社区是否可以将您自己的变量命名为$\呢? 还是我的代码被认为是糟糕的设计 谢谢您可以这样做,但我不推荐这样做,因为变量也有这种模式/前缀,例如$\u SERVER,$\u SESSION,$\u GET,这可能会

我正在建立一个网站,我包括了一个名为“settings.php”的设置文件, 我认为用$u设置注册一个全局变量看起来很酷 作为一个站点设置数组(db\U名称、db\U通行证等) 因此:


然后访问子页面上的这些设置。。。通过访问$\u设置

这个代码运行得很好, 但我很好奇,php程序员社区是否可以将您自己的变量命名为$\呢? 还是我的代码被认为是糟糕的设计


谢谢

您可以这样做,但我不推荐这样做,因为变量也有这种模式/前缀,例如
$\u SERVER
$\u SESSION
$\u GET
,这可能会有点混淆

但是,根据报告。您可以这样做:

有效变量名称字母或下划线开始后跟任意数量的字母、数字或下划线。作为正则表达式,它可以这样表示:“[a-zA-Z\ux7f-\xff][a-zA-Z0-9\ux7f-\xff]*”


最后,你做什么是个人偏好。

我个人认为这是个坏主意。更好的解决方案是创建singleton类,在整个应用程序中提供配置

大概是这样的:

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();

这不是最好的解决方案,但很容易实现,而且很有效

这是您的代码,想做什么就做什么这只是个人喜好。当然,像
$\u SETTINGS
这样独特的全局设置是实用的,并且使其用途显而易见。(如果你仍然将应用程序配置的另一半拆分到数据库中,那就太傻了。)那么这个问题我们的答案是什么?@Rizier123我接受你的答案作为最终答案->命名一个var$\u设置是合法的,但可能会让代码读者对supoerglobals感到困惑。嗨,谢谢你的回答,请问,为什么它比index.php中作为设置文件包含的设置数组更好?为什么这很重要?我想更好地理解…使用这门课有什么好处?而且你说这不是最好的解决方案。。什么是最好的解决方案?嗨,这是一个比使用全局变量更干净的解决方案。在全局范围外使用全局变量是非常危险的,因为对这些全局变量的任何更改(例如,代码中的输入错误)都可能在程序的不同组件中产生意外行为。这样,您就可以将原始配置数据从应用程序的其余部分中分离出来。最好的解决方案是完全避免使用单例类,但要做到这一点,您必须重写应用程序的基本逻辑。尝试阅读一些关于依赖注入的内容。嗨,我有点困惑,最好的解决方案是避免使用单例类?我的代码总是乱七八糟的,但我每天都在努力改进。。。在我的新站点中,我仍然处于ui样式部分,只是转到了逻辑部分。。。那么,你建议我如何以最好的方式完成设置部分?
$config = MyConfigProvier::getInstance()->getConfig();