-1

同じクラスの他の関数から関数の変数にアクセスする方法を探していました。私が検索したのは、グローバル変数を使用しています。メソッドと印刷コードを同じページ (クラスではなく) に作成するとうまくいきますが、それらのメソッドをクラスに分けてメイン ページから呼び出すとうまくいきませんでした。

ああ..そして、メインページのテーブルで i_type() メソッドが繰り返されるたびに $rand_type が異なる必要があるため、グローバル変数を使用できないことがわかりました。そして、両方のメソッドで $rand_type の同じ値を使用する必要があります。

(状況は... 私のゲームでは、最初にさまざまな種類のアイテムをランダムに印刷し、そのうちの 1 つをクリックしてクラスとレベルをランダムに決定します。)

どうすれば解決できますか?

class Item {

    function i_type() {
        $rand_type = rand(1,8);
        // some other codes below..
        return $some_data;
    }

    function i_buy() {

        $rand_class = rand(1,3);
        $rand_level = rand(1,5);
        // some other codes below..
        return $some_data;
    }
}
4

2 に答える 2

1

privateまたは変数を設定しpublicます (プライベートの方が安全ですが、アクセスは制限されています)。

class Item {
    private $rand_class;
    private $rand_level;
    function getRandLevel() {
        return $this->rand_level;
    }
    function setRandLevel($param) {
        //clean variable before setting value if needed
        $this->rand_level = $param;
    }
}

次に、クラスのインスタンスを作成した後、任意の関数を呼び出します

$class = new Item();
$rand_level = $class->getRandLevel();
$setlvl = 5;
$class->setRandLevel($setlvl);

これをカプセル化と呼びます。しかし、それはより高い概念です。プライベート/パブリック変数はそのようなアクセスです。

于 2013-09-04T01:31:00.813 に答える
0

次の方法で変数にアクセスできます。

  • 公開する
  • ゲッター

    class Item {
    
    private $rand_type;
    private $rand_class; 
    private $and_level;
    
    public function setRandType($type){  $this->rand_type =$type ;}
    
    public function getRandType(){ return $this->rand_type ;}
    
    
    public function i_type() {
        $this->rand_type = rand(1,8);
        // some other codes below..
        return $some_data;
    }
    
    public function i_buy() {
    
        $this->rand_class = rand(1,3);
        $this->rand_level = rand(1,5)
        // some other codes below..
        return $some_data;
    }
    
      }
    

したがって、オブジェクトをインスタンス化します。

 $item = new Item();

を呼び出す $item->i_type()と、$item->getRandType()から rand 値が取得されi_buy()ます。

于 2013-09-04T01:32:41.967 に答える