PHP>;如何将一个类划分为多个类?

PHP>;如何将一个类划分为多个类?,php,class,object,constructor-chaining,Php,Class,Object,Constructor Chaining,我有一个很大的PHP类叫做“Player” 里面有很多函数(将近2000行)。实际上,我是这样使用这些函数的: $player = new Player(1) echo $player->getLogin(); echo $player->getStatisticPerception(); echo $player->getWeaponId(); echo $player->attackPlayerId(3,$player->getWeaponId()); 我认为

我有一个很大的PHP类叫做“Player”

里面有很多函数(将近2000行)。实际上,我是这样使用这些函数的:

$player = new Player(1)
echo $player->getLogin();
echo $player->getStatisticPerception();
echo $player->getWeaponId();
echo $player->attackPlayerId(3,$player->getWeaponId());
我认为把这个类分成多个类是个好主意,但我不知道怎么做。我如何创建类似的内容,例如:

$player = new Player(1);
echo $player->getLogin();
echo $player->statistics->getAttack();
echo $player->stuff->getWeaponId();
echo $player->doAction->attackPlayerId(3, $player->getWeaponId());

如果我认为我必须在这个对象内创建一个对象,但是如果我这样做了,我就不能访问主“$player”的对象数据(例如,在Stuff对象中,我不能访问player对象的$level变量)。

你可以使用类继承

Class Player {
  protected $level;
  public $stuff;
  function __construct() {
    $this->stuff = new Stuff();
  }
}

Class Stuff extends Player {
  function getWeaponId() {
    // You can access Player's $level here using $this->level
  }
}

您可以使用类继承

Class Player {
  protected $level;
  public $stuff;
  function __construct() {
    $this->stuff = new Stuff();
  }
}

Class Stuff extends Player {
  function getWeaponId() {
    // You can access Player's $level here using $this->level
  }
}
在这样一行中:

echo $player->statistics->getAttack();
您正在访问Player类的
统计信息
成员。为了使用链接,该变量还必须是对象。您可以创建一个单独的统计类,其中包括
getAttack
方法。然后在Player类构造函数中,将
$this->statistics
初始化为statistics类的实例

类似地,对于
stuff
doAction
,它们需要是对象。虽然我不确定它们是否真的适合单独的对象。

在这样一行中:

echo $player->statistics->getAttack();
您正在访问Player类的
统计信息
成员。为了使用链接,该变量还必须是对象。您可以创建一个单独的统计类,其中包括
getAttack
方法。然后在Player类构造函数中,将
$this->statistics
初始化为statistics类的实例


类似地,对于
stuff
doAction
,它们需要是对象。虽然我不确定它们是否适合单独的对象。

您可以创建多个类别,如
玩家统计
武器
玩家动作
,并将它们链接到玩家类。。。例如:

class Player{
    private Statistics; 
    private Weapon;

    function __construct(){
        $this->Statistics = new Statistics($this);
        $this->Weapon = new Weapon($this);
    }

    function getAttack(){
        return $this->Statistics->getAttack();
    }
}

class Statistics{
    private Player;
    function __construct($_player){
         $this->Player = $_player;
    }
}
像这样的事。。。这是一个,取决于对象之间的关系


希望这有帮助

您可以创建多个类别,如
玩家统计
武器
玩家动作
,并将它们链接到玩家类别。。。例如:

class Player{
    private Statistics; 
    private Weapon;

    function __construct(){
        $this->Statistics = new Statistics($this);
        $this->Weapon = new Weapon($this);
    }

    function getAttack(){
        return $this->Statistics->getAttack();
    }
}

class Statistics{
    private Player;
    function __construct($_player){
         $this->Player = $_player;
    }
}
像这样的事。。。这是一个,取决于对象之间的关系

希望这有帮助