1

我正在尝试一种简单的方法将 PHP 对象永久固定到内存中,然后将其提供给其他更临时的对象,以便在他们正常工作的页面请求服务期间发送消息。我对 Wordpress 还比较陌生,所以也许我把事情弄得太复杂了……让我通过一个例子来展示我想要做什么:

  1. 在启动时加载一个 UOM(度量单位)对象,该对象轮询数据库以获取单位列表、默认单位、单位类别(例如,磅是一种imperial度量)、转换率等。
  2. 想要使用 UOM 转换或查找的后续服务请求只需调用全局 UOM 对象 ( $UOM->get_measures_for_category ('speed'))。该对象已经在内存中,不需要返回数据库来处理请求。
  3. UOM 上的update()方法将允许基于事件或时间的触发器请求 UOM 对象进行自我更新。

这只是服务请求经常使用的一些相对静态的数据集的一个示例,并且重复查询数据库将是浪费的。希望人们熟悉这种模式,并且可以向我指出一些示例,说明您将如何在 Wordpress/PHP 环境中执行此操作。

4

2 回答 2

3

对于您想要的,这不是最好的方法。但是,您所谈论的内容需要了解 PHP 的基本原则之一和一般的编程(也称为范围),即全局范围是什么。

因此,如果您在全局范围内声明它:

 $uom = new UOM_Class();

然后在之后的任何文件中编写:

global $uom;
$uom->something();

它会起作用的。

然而,这都是浪费,相反,你会更好地使用静态方法,更像是单例模式,例如:

UOM::Something();

我把它留给你学习什么是单例,什么是作用域,这些是 PHP 的基本原则,你不应该在不知道作用域的情况下声称了解 PHP。最好的表达方式是在日常谈话中,它被称为上下文,全局范围就等于同时在每个人的耳边大喊大叫。每个人都可以访问它,它不是你想污染的东西

如果我看起来有点苛刻,我很抱歉,这里有一些应该有帮助的文章,他们谈论范围,单例和其他一些方法,比如对象工厂

http://php.net/manual/en/language.variables.scope.php http://www.homeandlearn.co.uk/php/php8p2.html

http://php.net/manual/en/language.oop5.patterns.php

于 2012-05-13T12:42:42.550 回答
0

最初发布时我没有明确提出我的问题,但根据与 Tom 的对话,我同意在 Stack Overflow 上更清楚地重新发布此问题。

于 2012-05-14T12:13:55.743 回答