2013-04-12 123 views
0

我試圖將會話變量傳遞到下面的類中。然而,它似乎並沒有工作,並引發以下錯誤:我們是否可以將會話變量傳遞給類

Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\pard_config\configuration.php on line 6

我該如何解決這個問題?

我的代碼:

<?php 
    session_start(); 
    class pardEngine{ 
     public $hostname = $_SESSION['HOSTNAME']; 
     public $database = $_SESSION['DATABASE']; 
     public $database_user = $_SESSION['USER']; 
     public $database_user_pass = $_SESSION['PASSWORD']; 
    } 
?> 

回答

6

在這個類的constructor分配這些屬性,而不是這樣。

0
session_start(); 
class pardEngine{ 
    public function __construct(){ 
    $hostname = $_SESSION['HOSTNAME']; 
    $database = $_SESSION['DATABASE']; 
    $database_user = $_SESSION['USER']; 
    $database_user_pass = $_SESSION['PASSWORD']; 
    } 
    } 
2

您不能在類聲明部分中分配這些值。

利用構造函數。

session_start(); 
class pardEngine{ 
     function __construct() { 
      $hostname = $_SESSION['HOSTNAME']; 
      $database = $_SESSION['DATABASE']; 
      $database_user = $_SESSION['USER']; 
      $database_user_pass = $_SESSION['PASSWORD']; 

     } 
} 
8

Properties手冊頁:

Class member variables are called "properties". You may also see them referred to using other terms such as "attributes" or "fields", but for the purposes of this reference we will use "properties". They are defined by using one of the keywords public, protected, or private, followed by a normal variable declaration. This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

會話數據不適合在編譯時類別,這樣你的屬性只能與普通的代碼進行設置,或者在類外(因爲他們是公共的)或來自方法(可能是構造函數)。

這通常不實際的硬編碼這些值到一個類代碼,所以我會去的構造方法:

<?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

創建一個功能即能創建對象組成的數組:

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); 
相關問題