2011-03-15 57 views
1

嗯,这是如何做到的?帮助访问我的班级里面的变量

我有一个类

class Themes extends Access 
{ 
    public $theme_name; 
    public $theme_by; 
    public $theme_by_email; 
    public $theme_by_website; 
    public $theme_description; 
    public $theme_thumb; 
    public $theme_source; 
    public $theme_uploaded_on; 

    public function __construct() 
    { 
     parent::__construct(); 
     //$this->get_theme(); 
    } 

    public function get_theme() 
    { 
     $sql = "SELECT * 
       FROM `user_themes` 
       WHERE `user_id` = " . $this->session->get('user_id'); 
     if($this->db->row_count($sql)) 
     { 
      $result   = $this->db->fetch_row_assoc($sql); 
      $this->$theme_name  = $result['theme_name']; 
      $theme_by   = $result['theme_by']; 
      $theme_by_email = $result['theme_by_email']; 
      $theme_by_website = $result['theme_by_website']; 
      $theme_description = $result['theme_description']; 
      $theme_source  = $result['theme_source']; 
      $theme_uploaded_on = $result['theme_uploaded_on']; 
     }else{ 
      die('no results'); 
     } 
    } 
} 

我如何可以访问类之外的这些变量和它们的内容是什么?

在我的PHP页面

$theme = new Themes(); 

我尝试使用

$theme->them_name访问我的变量,但我得到一个未定义的错误

,但真的不知道我怎么可以访问可变...

回答

3

根据您当前的设置中,所有你需要做的就是调用:

$theme->theme_name; 
$theme->theme_by; 
etc 

然而,它通常是不好的做法,使实例变量公开,而是将它们设为私人的并使mutator methods

一个例子是:

private $theme_name; 

public function getThemeName(){ 
    return $this->theme_name; 
} 

public function setThemeName($theme){ 
    $this->theme_name = $theme; 
} 
+0

我想过,但我不想将不得不作出7个调用数据库只是为了得到我需要 – Eli 2011-03-15 02:59:34

+0

您不必到信息。您可以调用$ theme-> get_theme(),这将是您唯一的数据库调用。之后,使用mutator方法。使用setThemeName之类的一些附加好处,您可以在设置该值之前添加可选验证。 – 2011-03-15 03:05:21

+0

嗯,有点困惑,从哪里调用$主题?例如, – Eli 2011-03-15 03:31:02

1
$this->theme_name  = $result['theme_name']; 
$this->theme_by   = $result['theme_by']; 

关于的注意事项3210前置。

之后,你可以使用$theme->theme_name访问数据等