Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中是否有中心/主上下文? 这是我的问题:在Python中考虑Django或Web2Py(作为Web框架)或java Web应用程序(简单servlet应用程序或复杂的Struts2/Wikt/任意框架)。他们至少分享了两件我喜欢的事情: 有一个上下文环境或一种从请求或会话上下文(即全局数据、单音、池…任何可以共享内存值和行为的内容)中访问数据的方法 类被加载/初始化一次。也许我遗漏了一些东西,但在PHP中,类是在每个请求的基础上加载和初始化的(因此,在常规类中,如果我(例如)修改一个静态值,这将只存在于当前请求中,甚至同时命中该值的请求也会得到一个不同的值)_Php_Oop - Fatal编程技术网

PHP中是否有中心/主上下文? 这是我的问题:在Python中考虑Django或Web2Py(作为Web框架)或java Web应用程序(简单servlet应用程序或复杂的Struts2/Wikt/任意框架)。他们至少分享了两件我喜欢的事情: 有一个上下文环境或一种从请求或会话上下文(即全局数据、单音、池…任何可以共享内存值和行为的内容)中访问数据的方法 类被加载/初始化一次。也许我遗漏了一些东西,但在PHP中,类是在每个请求的基础上加载和初始化的(因此,在常规类中,如果我(例如)修改一个静态值,这将只存在于当前请求中,甚至同时命中该值的请求也会得到一个不同的值)

PHP中是否有中心/主上下文? 这是我的问题:在Python中考虑Django或Web2Py(作为Web框架)或java Web应用程序(简单servlet应用程序或复杂的Struts2/Wikt/任意框架)。他们至少分享了两件我喜欢的事情: 有一个上下文环境或一种从请求或会话上下文(即全局数据、单音、池…任何可以共享内存值和行为的内容)中访问数据的方法 类被加载/初始化一次。也许我遗漏了一些东西,但在PHP中,类是在每个请求的基础上加载和初始化的(因此,在常规类中,如果我(例如)修改一个静态值,这将只存在于当前请求中,甚至同时命中该值的请求也会得到一个不同的值),php,oop,Php,Oop,有没有办法在php中实现这一点?e、 g.在Python/Django中,我可以声明一个常规类,该类可以保存静态数据,也可以是一个真正的单例(同样,可能是一个池或一种中央队列管理器),并且在Django服务器死亡之前都是同一个对象(注意:Python中的模块在导入时保持加载在Python上下文中)。事实上PHP的“上下文”基于每个请求的生活方式在很大程度上是该语言如何与web服务器协同工作的核心 如果您想让它更像Java或其他语言一样工作,而不是每次请求都重置数据,那么基本上有两种选择: 将数

有没有办法在php中实现这一点?e、 g.在Python/Django中,我可以声明一个常规类,该类可以保存静态数据,也可以是一个真正的单例(同样,可能是一个池或一种中央队列管理器),并且在Django服务器死亡之前都是同一个对象(注意:Python中的模块在导入时保持加载在Python上下文中)。

事实上PHP的“上下文”基于每个请求的生活方式在很大程度上是该语言如何与web服务器协同工作的核心

如果您想让它更像Java或其他语言一样工作,而不是每次请求都重置数据,那么基本上有两种选择:

  • 将数据序列化为文件、数据库等,并在下一个请求时重新加载
  • 使用PHP编写服务器,而不是通过web服务器提供页面
典型的方法是将数据序列化到存储器中,并在后续请求中重新加载数据


虽然可能,但我不推荐用PHP编写服务器。尽管付出了很多努力,PHP仍然有一些糟糕的内存管理,在长时间运行的PHP进程中很可能会遇到内存泄漏。

除非您使用某种应用程序服务器,否则脚本的环境是按请求设置/拆除的。PHP本身不提供持久性(忽略$\u会话),除非您自己提供。提供将数据存储到缓存的能力,该缓存可以跨请求持久化。但是除了一些类似的系统之外,没有,因为php在每次请求后都会完全退出。uuh:(我对python有很长时间的研究,认为PHP5.5会添加类似的内容。遗憾的是,我喜欢这个“特性”(真正的特性是我提到的其他工具明确区分每个请求代码和非每个请求代码)。