0

我在数据库中有一个包含一些静态数据的特定表。无论如何,许多方法都需要这些数据,并且每个方法一次又一次地调用数据库来获取这些数据。

现在 PHP 中有没有办法从数据库中选择数据并将其保存为常量或会话(在这种情况下我不能使用会话)?

我想要做的是将请求放入结构中并使变量静态,但它不会改变结果。每次方法调用静态变量时,数据库中的选择无论如何都会完成..

class service {


    public static $actions;

    public function __construct() {

        self::$actions = self::getActions();

    }

    public static function getActions() {
        $actions = self::$db->select('_actions', '*');
        return $actions;
    }
}
4

3 回答 3

4

您的代码已经非常接近了。您只需要添加一个检查以查看数据是否已被查询,并确保您使用的是静态类变量,而不是局部变量。

您应该意识到静态变量和构造函数存在于两个不同的世界中。静态变量在类的生命周期内是持久的——构造函数每个实例运行一次。

public static $actions = null;


public static function getActions() {
    if (self::$actions === null) {
        self::$actions = self::$db->select('_actions', '*');
    }
    return self::$actions;
}
于 2013-07-23T16:10:26.773 回答
1

查看缓存数据 - http://www.phpfastcache.com/

您可以使用上面链接之类的库,或者编写一些简单的东西来序列化数据并将其写入文件。如果文件存在,则使用该数据并在后续请求相同数据集时对其进行反序列化。

于 2013-07-23T16:03:54.317 回答
0

类似于 Sam Dufel 的答案,但在构造函数中进行检查和查询。

class service {


    public static $actions;

    public function __construct() {

        if (!self::$actions) {
            self::$actions = self::$db->select('_actions', '*');
        }

    }

    public static function getActions() {
        return self::$actions;
    }
}
于 2013-07-23T16:20:38.687 回答