正如我们在第29章中所做的一样,对于这个项目,我们将再次使用事件驱动的方法来编写代码。
我们仍然将以系统流程图的绘制开始,绘制了用户使用系统的可能方式。在这个例子中,我们绘制了3幅代表用户与系统可能进行的3种不同交互方式的流程图。当用户没有登录时,用户拥有不同的权限。而当用户以普通用户或管理员身份登录时,他们又具有不同的权限。这些权限分别如图30-1、图30-2和图30-3所示。
图 30-1 当一个用户没有登录时,他只能进行有限的操作 图 30-2 用户登录后,可以通过不同的选项修改个人喜好 图 30-3 管理员拥有专用的操作在图30-1中,可以看到没有登录的用户所能进行的操作。可以看到,该用户可以登录(如果已经有一个账户),创建一个账户(如果还没有账户),或者查看可供订阅的邮件列表(作为一种市场营销策略)。
图30-2显示了用户登录后可以进行的操作。用户可以修改账户设置(邮件地址和个人喜好),更改密码,修改所订阅的邮件列表。
图30-3显示了系统管理员登录后可以进行的操作。可以看到,系统管理员除了拥有大多数普通用户拥有的功能,还具有一些额外选项。管理员还可以创建新的邮件列表,通过上载文件为某个邮件列表创建新邮件,并且在发送这些邮件前对它们进行预览。
由于我们再次使用了事件驱动的方法,因此应用程序的架构包含在文件index.php中,由它调用一系列函数库。该程序用到的文件总览如表30-1所示。
我们将以自己的方式来完成项目,以创建存储订阅者和列表信息的数据库开始。