首页 > 解决方案 > 为什么 Doctrine Cache 不保存原始 php 数组?

问题描述

我正在为我的项目使用 Doctrine Cache,并且我正在使用它的 PhpFileCache 驱动程序。 https://github.com/doctrine/cache/blob/1.10.x/lib/Doctrine/Common/Cache/PhpFileCache.php

而且我不明白为什么它没有将我的任何数据保存在原始 php 数组中?相反,它将所有这些都保存为具有反序列化功能的序列化数据。 https://github.com/doctrine/cache/blob/1.10.x/lib/Doctrine/Common/Cache/PhpFileCache.php#L87-L93

    if (is_object($data) && method_exists($data, '__set_state')) {
        $value = var_export($value, true);
        $code  = sprintf('<?php return %s;', $value);
    } else {
        $value = var_export(serialize($value), true);
        $code  = sprintf('<?php return unserialize(%s);', $value);
    }

我懂了。这里有一些额外的检查,并且我的所有数据由于某种原因没有通过这个条件,但是如果我只留下这个代码:

        $value = var_export($value, true);
        $code  = sprintf('<?php return %s;', $value);

它将从我的所有数据中将原始 php 数组保存在缓存中,并且可以正常工作。

为什么会这样?为什么这种情况对我不起作用?

标签: phparrayscachingdoctrine

解决方案


推荐阅读