【发布时间】:2021-11-02 07:16:48
【问题描述】:
静态方法和static 变量如何在网络上工作?因为它保留了静态变量中的值。现在我有一个网站并付款,有关付款的信息在静态变量中。这会给multi-user 平台带来问题吗?
【问题讨论】:
标签: php laravel static static-methods
静态方法和static 变量如何在网络上工作?因为它保留了静态变量中的值。现在我有一个网站并付款,有关付款的信息在静态变量中。这会给multi-user 平台带来问题吗?
【问题讨论】:
标签: php laravel static static-methods
在 PHP 中,每个请求都会产生一个全新的(短暂的)代码执行环境。如果您只将支付信息保存在一个变量中(无论是否为static),在请求完成并且用户得到他们的响应后,它就会不复存在。这就是为什么是否有多个用户并不重要,因为在对您的服务器的每个请求中,无论如何都会使用一个新的、新鲜的状态,并且此时您无法获得来自先前(或并发)请求的信息。
为了持久化信息,您必须将其存储在您的请求生命周期中存在的某个地方,例如数据库。您可以将用户的详细信息存储在会话数据中(这是每个用户数据的地方,这些数据也可以在请求中持续存在但仍然是短暂的,它的存在是为了在同一用户浏览页面时在不同请求中存储一些信息) 当他们登录或首次使用该网站并知道他们的用户是谁时,您会将支付数据等内容存储在与用户 ID 或姓名相关联的数据库中。下次(甚至几年后)您将能够通过基于相同的用户 ID 或名称查找相同的存储数据再次找到它。
注意:在其他环境中,事情的表现可能会有所不同。例如,如果您有一个 node.js 服务器,变量将在用户的请求中持续存在 - 也是不同的请求 - 但当您的服务器进程关闭时会消失。解决方案是相同的,将应该永久保存在某种数据库中的东西存储。
【讨论】:
可以使用变量来引用类。变量的值不能是关键字(例如 self、parent 和 static)。
为什么将支付信息存储在静态变量中?
...但网站生成的所有内容始终仅供一位用户使用。 还有尽可能多的静态变量,网站上当前有多少用户..
【讨论】: