2011-03-15 3 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

私はそのことについて考えたが、私はちょうど私はあなたがする必要はありません – Eli

+0

必要な情報を取得するために、データベースへの7つのコールをしなければならないしたくありませんでした。 $ theme-> get_theme()を呼び出すことができます。これは唯一のDB呼び出しです。その後、ミューテータメソッドを使用します。 setThemeNameのようなものを使用することでいくつかの利点が得られました。その値を設定する前にオプションの検証を追加できます。 –

+0

um、ちょっと混乱していますが、$ themeはどこから呼び出されていますか? – Eli

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

注記$thisが先頭に追加されました。その後

あなたがしなければならないすべてがコールされ、現在の設定では$theme->theme_nameなど

関連する問題