-1

我正在寻找一种方法来从同一类中的另一个函数访问函数中的变量。我搜索的是使用全局变量。当我在同一页面(而不是类)上创建方法和打印代码时,它运行良好,但是当我将这些方法分离到一个类中并从主页调用它们时,它不起作用。

哦..我刚刚发现我不能使用全局变量,因为每次 i_type() 方法在主页上的表中迭代时,我的 $rand_type 都应该不同。而且我需要在这两种方法中使用相同的 $rand_type 值。

(情况是……在我的游戏中,我会先随机打印不同类型的物品,然后点击其中一个随机确定等级和等级。)

我该如何解决?

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

您设置privatepublic变量(私有更安全但访问受限)。

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 回答