如何跟踪同一用户(对象)的多个实例

时间:2011-11-26 12:40:30

标签: php object irc

我正在用PHP写一个IRC机器人,我想比其他大多数机器人做得更精致。

我的申请中有以下课程:

  1. Bot - 实际的bot类,它处理机器人可以获得的所有功能和命令。
  2. Registry - 全局设置和变量,传递给任何正常运行的类,这样我就不必使用变量来丢弃全局命名空间。
  3. Channel - 定义渠道对象,属性:$name, $nicklist,其中$name是渠道名称,$nicklistUser个对象的数组。< / LI>
  4. User - 定义用户对象,属性:$nickname, $fullAddress,其中$fullAddressnick!user@host形式的用户地址。
  5. 到目前为止,用户可能在多个频道上,并且因为我不想拥有来自同一用户的多个对象(例如,用户改变了他的昵称,我会有更新多个元素而不只是一个元素。

    我如何解决这个问题,我在考虑在Bot类的基础上持有一个大用户池,并将这些引用传递给通道,但我真的不知道如何做到这一点要么:P

    有人能指出我正确的方向吗?如果您愿意,我可以粘贴我当前的代码(它相当长,所以如果没有人需要,我宁愿不这样做。)

    感谢。

2 个答案:

答案 0 :(得分:0)

您可以向您的用户添加频道ID列表,每次用户加入新频道时,您都会在列表中附加新的频道ID,因此如果用户离开频道,您将从其列表中删除频道ID

答案 1 :(得分:0)

由于Bot对象是需要进行跟踪的对象,因此在其上有一个User个对象数组,并将指针传递给这些对象(又名$bot->users['name'])到Channel对象。

这样,如果用户列表中已找到用户,则可以传递两次相同的指针。