2012-02-24 15 views
1
私は私のクラスから変数へのアクセスに問題を抱えている

...PHP5変数のスコープとクラス建設

class getuser { 
    public function __construct($id) { 
     $userquery = "SELECT * FROM users WHERE id = ".$id.""; 
     $userresult = mysql_query($userquery); 
     $this->user = array(); 
     $idx = 0; 
     while($user = mysql_fetch_object($userresult)){ 
      $this->user[$idx] = $user; 
      ++$idx; 
     } 
    } 
} 

私はグローバルな「クラス」ファイルにこのクラスを設定していて、後で私が通過次のスクリプトにユーザーID:

$u = new getuser($userid); 

    foreach($u->user as $user){ 
     echo $user->username; 
    } 

は、私は、これは私のユーザーの名前を与えるだろうが、それはないですが、どこが間違っているつもりだことを願っています!

おかげ

+1

アーキテクチャの面では、私は正確にあなたがのgetUserクラスを持っている必要がありますシナリオが表示されません。たぶんあなたはUserクラスと、おそらくgetUsers()メソッドを持つTeamクラスを考慮する必要があります。それらのユーザーと何をしているかによって異なります... –

+0

error_reporting(E_ALL)を追加しています。これらの種類のスクリプトがデバッグに役立つことが多い場合は、トップに表示されます。 – Cerad

答えて

1

ようなあなたのクラスでパブリックとしてユーザーのメンバーを定義してください、あなたはそれが公共の宣言か(第二の溶液をゲッターとセッターを実装する必要がありますゲッターとセッターを有する)が好ましい

class A { 

    public $foo; 

    //class methods 
} 

$a = new A(); 
$a->foo = 'whatever'; 

、プロパティごとに

あなたの例では
class B { 

    private $foo2; 

    public function getFoo2() { 
    return $this->foo2; 
    } 

    public function setFoo2($value) { 
    $this->foo2 = $value; 
    } 

} 

$b = new B(); 
$b->setFoo2('whatever'); 
echo $b->getFoo2(); 

class getuser { 
    private $user; 

    public function __construct($id) { 
     $userquery = "SELECT * FROM users WHERE id = ".$id.""; 
     $userresult = mysql_query($userquery); 
     $this->user = array(); 
     $idx = 0; 
     while($user = mysql_fetch_object($userresult)){ 
      $this->user[$idx] = $user; 
      ++$idx; 
     } 
    } 

    /* returns the property value */ 
    public function getUser() { 
     return $this->user; 
    } 

    /* sets the property value */ 
    public function setUser($value) { 
     $this->user = $value; 
    } 

} 


$u = new getuser($userid); 
$users_list = $u->getUser(); 

    foreach($users_list as $user) { 
     echo $user->username; 
    } 
+0

あなたの答えをありがとう、私のコードを使ってあなたが意味することを説明できるでしょうか? – Tim

+0

大丈夫ですが、あなたに答えるのを少し待ってください –

2

クラスのプロパティにアクセスするために、この

class getuser { 
    public $user = null; 
    //... 
}