1

我正在开发一个基本的任务/成就系统。我有一个我们称之为 questManager 的类。我确定任务完成的方法是将 Action 对象与 Quest 对象进行比较。questManager 包含一组尚未完成的 Action 对象。

标准动作利用率如下所示: $actionObject->used()->item(itemID)-on()->user(userID);

我想知道是否可以获取该对象,将其传递给任务管理器并将调用的方法与传递的参数一起应用于任务管理器的不完整操作数组中的所有操作对象?

我知道我可以简单地构建一个方法数组,这些方法与提供的参数一起被调用。我只是不确定 PHP 中是否有针对这种情况的原生功能。我已经阅读了反思,但我不确定这是否是我正在寻找的。非常感谢您的帮助。

4

1 回答 1

0

在查看 PHP 文档时,我发现了一个 MethodLog 类,该类是有人编写的,它使用了 __call 魔术方法。本质上,它将所有带有传递参数的函数调用记录到一个数组中。然后,您可以将一个对象传递给 MethodLog 类的 replay 方法。它循环传入的对象并从传入的对象调用所有记录的函数。

所以我返回一个 MethodLog 对象,调用适用的函数 $methodLog->used()->item(itemID) 等,然后将 MethodLog 对象传递给我的任务管理器。任务管理器遍历我的所有动作并调用 MethodLog 调用的每个动作对象上的函数!

非常整洁的发现,并向想到这一点的人表示敬意。

于 2013-08-07T23:34:58.230 回答