语法错误,意外'$ _SERVER'(T_VARIABLE)

时间:2017-01-23 04:48:42

标签: php yii2

我有使用常量变量的类,但是我得到了这个错误

syntax error, unexpected '$_SERVER' (T_VARIABLE)

这是我的代码

<?php

namespace common\models;

class EConstant
{

    ....
    const HomeUrl = 'http://'.$_SERVER['SERVER_NAME'].'/someweb/';
    ....

}

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

你不能这样做,而是试试这个,

<?php

class EConstant
{

    protected $homeURL;

    public function __construct() {
         $this->homeURL = 'http://'.$_SERVER['SERVER_NAME'].'/someweb/';
    }
}

答案 1 :(得分:1)

Saravanan Sampathkumar的答案是正确但不完整。

如指南所述:

  

yii\base\Componentyii\base\Object扩展课程时,建议您遵循以下约定:
   - 如果覆盖构造函数,请指定$config参数作为构造函数的最后一个参数,然后将此参数传递给父构造函数。
   - 始终在覆盖构造函数的末尾调用父构造函数    - 如果您覆盖yii\base\Object::init()方法,请确保在init()方法的开头调用init()的父实现。

所以它应该是:

public function __construct($config)
{
    $this->homeURL = 'http://' . $_SERVER['SERVER_NAME'] . '/someweb/';
    parent::__construct($config);
}
应该使用

init()代替:

public function init()
{
    parent::init();
    $this->homeURL = 'http://' . $_SERVER['SERVER_NAME'] . '/someweb/';
}

值得一提的是,您不应完全信任此$_SERVER['SERVER_NAME']变量,因为它可能会被篡改。至少检查传入值是否在预期值列表中。