如何在MVC项目中的php类中使用全局变量

时间:2012-08-01 13:15:59

标签: php model-view-controller session model global-variables

我想在mvc项目中的模型类中的函数中$st_id,如下所示,但它给我一个$st_id未定义的错误。我能做些什么来解决这个问题?

<?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);
    }
}   
?>

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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 :(得分:0)

为什么不直接将其称为$_SESSION['username']?它已经是全球性的......