如何动态地向类添加方法

时间:2011-10-31 16:13:51

标签: php oop class

我是面向对象编程的新手,我很难想到OOP。

我想做的是RPG游戏。

我有Hero课程(用户) 它有这样的属性:名字,发型,力量。 以及这些方法:说话,攻击,防守

我希望动态添加更多方法(法术),因为英雄会学习更多法术。

我不知道最好的方法是什么。我能想到以下几点:

创建一个类'spell'并且每个魔法咒语都有一个类从它扩展并向Hero添加一个类型为'spell'的属性(必须是一个数组)。 当英雄尝试使用一些法术时,必须尝试整个阵列,看看是否有这样的魔法(方法)。 (可能错了)


你是怎么做到的? TY

4 个答案:

答案 0 :(得分:1)

你可以继续将所有法术方法放在课堂上,然后每当被调用时检查以确保他们可以使用它。如果你使用包含允许法术的类属性数组,你也可以事先检查。

答案 1 :(得分:1)

你可以创建一个名为Ability的基类,并拥有从中派生的法术和其他英雄技能。然后在你的英雄类中,创建一个类型为Ability的链接列表,并将其命名为“currentAbilities”或类似的东西。

每次你的英雄学习新技能时,都要将其添加到列表中。每个能力都可以共享常见的方法,如Cast(),Upgrade()等。然后,当需要列出并使用可用的法术和攻击时,只需阅读链接列表并调用他们的方法。

答案 2 :(得分:0)

答案 3 :(得分:0)

如果你真的希望它是动态的,你可以使用魔术方法__call()(更多信息here),这将允许你调用不存在或超出范围的函数。

你仍然需要在某处定义功能;这只允许您控制函数的范围。你无法在最严格的意义上“动态”创造它们。