如何在PHP中创建嵌套类?

时间:2015-07-02 21:46:50

标签: php

我是PHP开发的新手,我完全迷失了PHP如何处理类和继承。正如我读过的,PHP中没有嵌套类。我来自C#,我想重现以下结构:

private class GameScore {
        public TeamData[] teams =  new TeamData[2];                      
        public Boolean alert { get; set; }
        public String date { get; set; }
        public String time { get; set; }
        public class TeamData {                
            public String name { get; set; }
            public String score { get; set; }
        }
    }

每个GameScore都应该具有参加比赛的球队的名称以及他们在给定比赛中获得的分数。我希望能够以下列方式存储这些数据,列出多个匹配的几个分数:

GameScore[] game = new GameScore[n];

game[0].alert = true;
game[0].date = "Oct. 17";
game[0].time = "15:25 EST";
game[0].teams[0].name = "Toronto Raptors";
game[0].teams[0].score = "0";
game[0].teams[1].name = "New York Knicks";
game[0].teams[1].score = "0";

...
编辑:我尝试了以下结构:

class TeamData{
    public $name;
    public $score;

    public function __construct() {
        $this->name = '';
        $this->score = '';
    }
}

class GameScore{
    public $alert;
    public $date;
    public $time;

    public $team1;
    public $team2;

    function __construct(){
        $this->alert = false;
        $this->date = '';
        $this->time = '';
        $this->team1 = new TeamData();
        $this->team2 = new TeamData();
    }
}

虽然这复制了用C#编写的相同结构,但它不会在GameScoreTeamData之间产生任何依赖关系(例如,如果我想要访问它,我需要实例化GameScore.TeamData C#上的数据类型,使用上面代码的PHP不是这种情况)

实现这一目标的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

使用traits中的php熟悉自己:

https://secure.php.net/manual/en/language.oop5.traits.php

答案 1 :(得分:0)

Php不支持嵌套类 如果TeamData不需要访问GameScore的成员,您可以将它们写成两个单独的类,这似乎就是这种情况。 并且php没有内置的get / set关键字,因此需要手动编写getter和setter。