隧道
隧道
隧道是一段分成步骤的旅程——注册、结账、续订——其路径会随着访客的回答而变化。该包记住每个访客的位置,让他们通过可能看到的步骤,并在他们试图跳过时将他们送回应有的位置。
光标树
隧道是作为树构建的,而不是列表。从两个地方到达的步骤是两个光标,每个都有自己的哈希和存储值:这使得一个分支可以增长另一个没有的步骤,而你来时的路径,在每个隧道的末尾被读取。
数据库中的会话
打开一个隧道会创建一个会话,浏览器会话仅通过其 ID 识别。它保存步骤存储的值,并在最后一个显示的步骤后一天过期——或者在该步骤要求时更早。过期的会话每15分钟被调度程序丢弃;已完成和待处理的会话会被保留。
访客可以去的地方
每个步骤决定它是否可以被显示以及否则将访客发送到哪里。链接和按钮遵循相同的规则,因此链接永远不会导致重定向回去:在道路分开时没有下一步按钮,无法回到付款之前,在关闭的会话中没有可以返回的内容。
走路时要关注什么
步进器
你所站的位置,后面有什么,前面有什么。一个空隙标记了道路依赖于尚未做出的选择的地方。
在这一步之后
在每一步下面,发动机刚刚做了什么,以及其状态:光标、步骤如何完成、会话及其过期时间。
开发工具栏和命令行
开发工具栏的隧道标签在其隧道的地图上绘制了该浏览器的会话;bin/console tunnels:info 从命令行执行相同操作。