PHP中是否有中心/主要上下文?

时间:2013-07-15 15:37:42

标签: php oop

这是我的问题:在Python(作为Web框架)或Java WEB应用程序(简单的servlet应用程序或复杂的struts2 / wicket /任何框架)中考虑Django或web2py。他们至少分享了两件我喜欢的事情:

  1. 有一个Context环境或一种从请求或会话上下文中访问数据的方法(即全局数据,单例,池......任何可以共享内存中值和行为的内容)。
  2. 在ONCE上加载/初始化类。也许我错过了一些东西,但PHP中的AFAIK一个类被加载并在PER REQUEST基础上初始化(因此,在常规类中,如果我(例如)修改静态值,这将只存在于当前请求中,甚至同时请求命中该值将获得不同的一个。)
  3. 有没有办法在PHP中获得它?例如在Python / Django中我可以声明一个常规类,该类可以保存静态数据或者是一个真正的单例(再次:可能是一个池或一种中央队列管理器),并且在django服务器死亡之前将是同一个对象(注意:导入时,python中的模块将保存在python上下文中。

1 个答案:

答案 0 :(得分:0)

PHP的“上下文”基于每个请求生存的事实几乎是语言与Web服务器协同工作的核心。

如果你想使它更像Java或其他语言,每次请求都不会重置数据,你基本上有两个选择:

  • 将数据序列化为文件,数据库等等,并在下一个请求中重新加载
  • 不是通过Web服务器提供页面,而是使用PHP
  • 编写服务器

将数据序列化到存储中并在后续请求中重新加载是典型的方法。

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