我正在用PHP写一个IRC机器人,我想比其他大多数机器人做得更精致。
我的申请中有以下课程:
Bot
- 实际的bot类,它处理机器人可以获得的所有功能和命令。Registry
- 全局设置和变量,传递给任何正常运行的类,这样我就不必使用变量来丢弃全局命名空间。Channel
- 定义渠道对象,属性:$name, $nicklist
,其中$name
是渠道名称,$nicklist
是User
个对象的数组。< / LI>
User
- 定义用户对象,属性:$nickname, $fullAddress
,其中$fullAddress
是nick!user@host
形式的用户地址。到目前为止,用户可能在多个频道上,并且因为我不想拥有来自同一用户的多个对象(例如,用户改变了他的昵称,我会有更新多个元素而不只是一个元素。
我如何解决这个问题,我在考虑在Bot
类的基础上持有一个大用户池,并将这些引用传递给通道,但我真的不知道如何做到这一点要么:P
有人能指出我正确的方向吗?如果您愿意,我可以粘贴我当前的代码(它相当长,所以如果没有人需要,我宁愿不这样做。)
感谢。
答案 0 :(得分:0)
您可以向您的用户添加频道ID列表,每次用户加入新频道时,您都会在列表中附加新的频道ID,因此如果用户离开频道,您将从其列表中删除频道ID
答案 1 :(得分:0)
由于Bot
对象是需要进行跟踪的对象,因此在其上有一个User
个对象数组,并将指针传递给这些对象(又名$bot->users['name']
)到Channel
对象。
这样,如果用户列表中已找到用户,则可以传递两次相同的指针。