我有使用常量变量的类,但是我得到了这个错误
syntax error, unexpected '$_SERVER' (T_VARIABLE)
这是我的代码
<?php
namespace common\models;
class EConstant
{
....
const HomeUrl = 'http://'.$_SERVER['SERVER_NAME'].'/someweb/';
....
}
我的代码出了什么问题?
答案 0 :(得分:2)
你不能这样做,而是试试这个,
<?php
class EConstant
{
protected $homeURL;
public function __construct() {
$this->homeURL = 'http://'.$_SERVER['SERVER_NAME'].'/someweb/';
}
}
答案 1 :(得分:1)
Saravanan Sampathkumar的答案是正确但不完整。
如指南所述:
从
yii\base\Component
或yii\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']
变量,因为它可能会被篡改。至少检查传入值是否在预期值列表中。