我们可以将会话变量传递给类

dil*_*ini 0 php mysql oop session

我正在尝试将会话变量传递给下面的类.但是,它似乎没有工作,并抛出以下错误:

解析错误:语法错误,第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'];
    }
?>
Run Code Online (Sandbox Code Playgroud)

Álv*_*lez 8

从" 属性"手册页面:

类成员变量称为"属性".您也可以使用"属性"或"字段"等其他术语来查看它们,但出于本参考的目的,我们将使用"属性".它们通过使用public,protected或private之一,然后是普通变量声明来定义.此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估.

会话数据不适合编译时类别,因此您的属性只能通过常规代码设置,无论是在类外(因为它们是公共的)还是来自方法(可能是构造函数).

将这些值硬编码到类代码中通常是不切实际的,所以我会选择构造函数方法:

<?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']);
Run Code Online (Sandbox Code Playgroud)


Rah*_*san 6

在此类中分配这些属性,constructor而不是这样.