2012-08-01 66 views
0

我想在我的模型類中的函數中使用$st_id作爲mvc項目,如下所示,但它給我一個錯誤,$st_id未定義。我能做些什麼來解決這個問題?如何在MVC項目的php類中使用全局變量

<?php 

@session_start(); 
$st_id=$_SESSION['username']; 
if (!isset($_SESSION['USERNAME'])) 
{ 
header('Location: signin.php'); 
} 
//////////////////////  
class model 
{ 
    private $result; 
    public $rp_result; 
    ////////// 
    public function exe_query() 
    { 
     $mysqldb = new MySQLDatabase(); 
     $result=$mysqldb->query('CALL view_report('.$this->st_id.');'); 
     $this->rp_result=$mysqldb->fetch_all($result); 
    } 
} 
?> 

回答

0

你必須在類中聲明,如果你使用它與$this

class model { 
    public $st_id; 

    public function __construct() { 
     @session_start(); 
     $this->st_id = $_SESSION['username']; 
    } 

    public function exe_query() 
    { 
     $mysqldb = new MySQLDatabase(); 
     $result=$mysqldb->query('CALL view_report('.$this->st_id.');'); 
     $this->rp_result=$mysqldb->fetch_all($result); 
    } 
} 
2

你怎麼稱呼你的模型?

我建議你:

class model 
{ 
    private $result; 
    public $rp_result, $st_id; 

    public function __construct($st_id) 
    { 
     $this->st_id = $st_id; 
    } 

    public function exe_query() 
    { 
     $mysqldb = new MySQLDatabase(); 
     $result=$mysqldb->query('CALL view_report('.$this->st_id.');'); 
     $this->rp_result=$mysqldb->fetch_all($result); 
    } 
} 

而現在,你可以使用:

@session_start(); 
$st_id=$_SESSION['username']; 
if (!isset($_SESSION['USERNAME'])) 
{ 
    header('Location: signin.php'); 
} 

$model = new model($st_id); 
$model->exe_query(); 
+0

你說我在我的控制器類中使用會話?你對於答案上面的MR Matt有什麼看法? – 2012-08-01 13:40:26

+0

我在問你如何使用模型類。每當您的'$ st_id'與$ _SESSION ['username']'相同時,馬特的回答就可以了。如果由於某種原因,你需要'$ st_id'作爲別的東西,它不會工作。 – j0k 2012-08-01 13:52:48

+0

好的,謝謝。我想從控制器類中的函數中調用它。 – 2012-08-01 14:09:54

0

爲什麼不直接稱呼其爲$_SESSION['username']?它已經是全球性的...

+0

如何?請澄清你的想法。 – 2012-08-01 13:43:22

+0

@JavadYousefi $ _SESSION只要'session_start()'被調用就可以使用。將變量設置爲其值不是必需的。我認爲這就是真理試圖說的。 – Matt 2012-08-01 14:15:50