到目前为止,我觉得我已经理解了 OOP 编程的概念和优点,而且我在理解如何使用 PHP 中的类方面并没有遇到任何困难。
然而,这让我有点困惑。我想我可以理解它,但我仍然不确定。
我一直在关注一组视频教程(不确定链接到外部资源的规则,但我在 youtube 上找到了它们),它们很容易解释。除了,令人沮丧的是,当导师决定将一个类作为另一个类中的参数传递时。至少我认为这就是正在发生的事情。
Class Game
{
public function __construct()
{
echo 'Game Started.<br />';
}
public function createPlayer($name)
{
$this->player= New Player($this, $name);
}
}
Class Player
{
private $_name;
public function __construct(Game $g, $name)
{
$this->_name = $name;
echo "Player {$this->_name} was created.<br />";
}
}
然后我实例化 Game 类的一个对象并调用它的方法;
$game = new Game();
$game-> createPlayer('new player');
相当令人沮丧的是,导师并没有真正解释他为什么这样做,而且据我所知,也没有显示代码中任何可以证明这一点的调用。
Player 中的魔术方法构造函数是否将 Game 类作为引用传入?这是否意味着整个类都可以在 Player 类中通过引用访问?当引用 $this 而不指向任何特定的方法或属性时,您是在引用整个类吗?
如果这是正在发生的事情,那我为什么要这样做?如果我在我的游戏类中创建了一个玩家,那么我当然可以在游戏类中访问我的玩家属性和方法,对吗?为什么我希望我的游戏类也包含在我的 Player 类中?例如,我可以在 Player 类中调用 createPlayer() 吗?
如果我的解释令人困惑,我深表歉意。
我想我的问题归结为:我作为参数传递的究竟是什么,为什么我要在每天的 OOP 编程中这样做?