我正在用PHP编写一个IRC bot,并且我想让大多数其他机器人更复杂一点。如何跟踪同一用户(对象)的多个实例
我在我的应用程序下面的类:
Bot
- 实际BOT类,它处理所有的功能和命令的机器人可以得到的。Registry
- 全局设置和变量,传递给任何正常运行的类,这样我就不必使用变量抛出全局名称空间。Channel
- 定义频道对象,属性:$name, $nicklist
,其中$name
是频道名称和$nicklist
是User
对象的数组。User
- 定义用户对象,属性:$nickname, $fullAddress
,其中$fullAddress
是用户的地址,形式为[email protected]
。
不过,用户可能在多个通道上,并且由于我不想让来自同一用户的多个对象(例如,如果用户改变了他的昵称,我将不得不更新多个元素而不是一个)。
我该如何去解决这个问题,我正考虑在Bot
类的基础上举办一个盛大的用户池,并将这些引用传递给渠道,但我不知道如何做到这一点:P
任何人都可以指向正确的方向吗?如果你愿意,我可以粘贴我的当前代码(它很长,所以如果没有人需要它,我不会这样做)。
谢谢。
但重点是追踪频道上的用户,而不是用户频道,因为我想检查例如用户是否有特定频道的特权,并将他与该频道中的其他用户进行比较。在每个频道中制作一个用户列表比每个用户的频道列表更有意义。 (虽然两者可以合并) –
另外,它也会导致相同的问题。 2个用户可以在同一个频道上,那么我必须将相同的对象给2个用户。 –
您将仅添加通道ID而不是通道对象的实例。根据reqs,一个频道有很多用户,用户可以加入多个频道,同时用户也可以看到他加入的频道名称,因此用户可以看到频道名称列表。 – AlexTheo