更新集合中的对象

时间:2016-06-07 15:23:48

标签: php class oop

  

我正在使用Collection类来存储“玩家”的对象。现在在我的Bet课程中,我想更新其中一个玩家的积分..但我想我只是在我的收藏的一次实例中更新它。我不太确定如何与全局集合对象交谈。这是我的代码

Index.php 我正在创建一个新的PlayerCollection并将其传递给我的Parser类

$app->get('/', function () use ($twig) {

    try {
        $players = new PlayerCollection();
        $matchParser = new MatchParser($players);
        $matches = new MatchCollection($matchParser->parse('../data/data.json'));
    } catch(JsonException $e) {
        die($e->getMessage());
    }

    echo $twig->render('home.html', [
        'matches' => $matches->all(),
        'players' => $players
    ]);

});

Parser Class 我在构造函数中接受了PlayerCollection,并使用以下代码在Bet类中设置了Player对象。

测试this-> players-> find()功能,并从集合中返回正确的对象

$bet = new Bet();
$bet->setPlayer($this->players->find($name));

投注类

class Bet {

    private $player;
    private $teamHome;
    private $teamAway;
    private $scoreHome;
    private $scoreAway;


    public function getPoints($scoreHome, $scoreAway)
    {
        if($scoreHome == $scoreAway ) {
            $this->player->setPoints(100);
        }
    }
}

我调用函数来计算我的Twig模板中的分数

{{ bet.getPoints(match.getHomeScore(), match.getAwayScore()) }}

当我在我的下注类中回应玩家的分数时,它正在工作..但我的PlayerCollection在我的index.php页面上没有更新。

可能是我的模板?我要更新的值已经由twig放置,只是在模板的后面我调用方法来更新之前的变量,但已经放置了

知道我可能做错了什么吗?谢谢!

1 个答案:

答案 0 :(得分:-1)

当您创建新的Bet()对象时,您将其中一个玩家对象的现有实例复制到Bet对象中,因此不会更改原始对象。

之前在这里的

代码没有意义,oops