我试图将会话变量传递到下面的类中。但是,它似乎不起作用,并引发以下错误:
解析错误:语法错误,第6行的C:\ wamp \ www \ pard_config \ configuration.php中的意外T_VARIABLE
我该如何解决这个问题?
我的代码:
<?php
session_start();
class pardEngine{
public $hostname = $_SESSION['HOSTNAME'];
public $database = $_SESSION['DATABASE'];
public $database_user = $_SESSION['USER'];
public $database_user_pass = $_SESSION['PASSWORD'];
}
?>
答案 0 :(得分:8)
从Properties手册页:
类成员变量称为“属性”。你也可以看到它们 引用使用其他术语,如“属性”或“字段”,但 出于本参考的目的,我们将使用“属性”。他们是 使用关键字public,protected或private之一定义, 然后是正常的变量声明。 此声明可能 包括初始化,但这个初始化必须是一个常量 value - 也就是说,它必须能够在编译时进行评估 不得依赖于运行时信息才能进行评估。
会话数据不适合编译时类别,因此您的属性只能通过常规代码设置,无论是在类外(因为它们是公共的)还是来自方法(可能是构造函数)
将这些值硬编码到类代码中通常是不切实际的,所以我会选择构造函数方法:
<?php
class pardEngine{
private $hostname;
private $database;
private $database_user;
private $database_user_pass;
public function __construct($hostname, $database, $database_user, $database_user_pass){
$this->hostname = $hostname;
$this->database = $database;
$this->database_user = $database_user;
$this->database_user_pass = $database_user_pass;
}
}
session_start();
$engine = new pardEngine($_SESSION['HOSTNAME'], $_SESSION['DATABASE'], $_SESSION['USER'], $_SESSION['PASSWORD']);
答案 1 :(得分:6)
在此类的constructor
中分配这些属性,而不是这样。
答案 2 :(得分:2)
您不能在类声明部分中分配这些值。
使用构造函数。
session_start();
class pardEngine{
function __construct() {
$hostname = $_SESSION['HOSTNAME'];
$database = $_SESSION['DATABASE'];
$database_user = $_SESSION['USER'];
$database_user_pass = $_SESSION['PASSWORD'];
}
}
答案 3 :(得分:1)
创建一个能够从数组创建对象的函数:
class pardEngine
{
public $hostname;
public $database;
public $database_user;
public $database_user_pass;
/**
* @param array $array
* @return partEngine
*/
public static function createFromArray($array) {
$obj = new static;
$obj->hostname = $array['HOSTNAME'];
$obj->database = $array['DATABASE'];
$obj->database_user = $array['USER'];
$obj->database_user_pass = $array['PASSWORD'];
return $obj;
}
}
用法:
session_start();
$engine = pardEngine::createFromArray($_SESSION);
答案 4 :(得分:0)
session_start();
class pardEngine{
public function __construct(){
$hostname = $_SESSION['HOSTNAME'];
$database = $_SESSION['DATABASE'];
$database_user = $_SESSION['USER'];
$database_user_pass = $_SESSION['PASSWORD'];
}
}