我有一個常變量類,但我得到這個錯誤
syntax error, unexpected '$_SERVER' (T_VARIABLE)
這裏是我的代碼
<?php
namespace common\models;
class EConstant
{
....
const HomeUrl = 'http://'.$_SERVER['SERVER_NAME'].'/someweb/';
....
}
有什麼錯我的代碼?
我有一個常變量類,但我得到這個錯誤
syntax error, unexpected '$_SERVER' (T_VARIABLE)
這裏是我的代碼
<?php
namespace common\models;
class EConstant
{
....
const HomeUrl = 'http://'.$_SERVER['SERVER_NAME'].'/someweb/';
....
}
有什麼錯我的代碼?
你不能做到這一點,而不是嘗試此,
<?php
class EConstant
{
protected $homeURL;
public function __construct() {
$this->homeURL = 'http://'.$_SERVER['SERVER_NAME'].'/someweb/';
}
}
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']
變量,因爲它可以被篡改。至少在可能的情況下檢查傳入值是否在期望值列表中。
您不能將$ _SERVER ['SERVER_NAME']指定爲常量。該值必須是常量表達式,而不是(例如)變量,屬性或函數調用。請參閱:http://php.net/manual/en/language.oop5.constants.php – mith