Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/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 缓存反射对象_Php_Memcached_Apc - Fatal编程技术网

Php 缓存反射对象

Php 缓存反射对象,php,memcached,apc,Php,Memcached,Apc,我正在尝试缓存反射对象。看看代码: class A { public function __construct() { } } $memcache = new Memcache(); $memcache->addServer('127.0.0.1', 11211); $r = new ReflectionClass('A'); $memcache->set('a', $r); $r = $memcache->get('a'); $

我正在尝试缓存反射对象。看看代码:

class A {

        public function __construct() {
        }

}

$memcache = new Memcache();

$memcache->addServer('127.0.0.1', 11211);

$r = new ReflectionClass('A');

$memcache->set('a', $r);

$r = $memcache->get('a');

$a = $r->newInstanceArgs(array()); //here occurred the error
当我运行脚本时,它会生成:

PHP Fatal error:  ReflectionClass::newInstanceArgs(): 
Internal error: Failed to retrieve the reflection object

我也尝试过使用APC以及序列化和非序列化,但没有任何改变。

反射对象依赖于实例引用和虚拟属性;它们是PHP内部的,无法序列化

// Stores only serialized reference to ReflectionClass
$memcache->set('a', $r);
//=> O:15:"ReflectionClass":1:{s:4:"name";s:1:"A";}

// Retrieves only a class instance & 1 attribute
$r = $memcache->get('a');
//=> ReflectionClass { public $name = "A"; }
要从未序列化的类重建ReflectionClass,请使用给定名称重新初始化该类

$r = $memcache->get('a');
$r = new ReflectionClass($r->name);
$a = $r->newInstanceArgs(array());

反射对象依赖于实例引用和虚拟属性;它们是PHP内部的,无法序列化

// Stores only serialized reference to ReflectionClass
$memcache->set('a', $r);
//=> O:15:"ReflectionClass":1:{s:4:"name";s:1:"A";}

// Retrieves only a class instance & 1 attribute
$r = $memcache->get('a');
//=> ReflectionClass { public $name = "A"; }
要从未序列化的类重建ReflectionClass,请使用给定名称重新初始化该类

$r = $memcache->get('a');
$r = new ReflectionClass($r->name);
$a = $r->newInstanceArgs(array());

在将$r保存到memcache之前,
$r
是什么?(
$memcache->set('a',$r);
)错误消息中也缺少行号(在代码示例中,哪个消息与哪一行相关?)。你还说你尝试了一些东西,但没有提供任何代码,所以我们只能说:你做错了。不管你想做什么。请记住,阅读问题的人需要理解它;)@Evert的可能重复,你是对的:$r=newreflectionclass('A')$r=非序列化(序列化($r))$a=$r->newInstanceArgs(array());生成相同的错误在将其保存到memcache之前,
$r
是什么?(
$memcache->set('a',$r);
)错误消息中也缺少行号(在代码示例中,哪个消息与哪一行相关?)。你还说你尝试了一些东西,但没有提供任何代码,所以我们只能说:你做错了。不管你想做什么。请记住,阅读问题的人需要理解它;)@Evert的可能重复,你是对的:$r=newreflectionclass('A')$r=非序列化(序列化($r))$a=$r->newInstanceArgs(array());产生相同的错误