1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
--TEST--
APC: apcu_store/fetch with objects
--SKIPIF--
<?php
require_once(dirname(__FILE__) . '/skipif.inc');
if (PHP_VERSION_ID >= 80100) die("skip For PHP < 8.1");
?>
--INI--
apc.enabled=1
apc.enable_cli=1
--FILE--
<?php
class foo { }
$foo = new foo;
var_dump($foo);
apcu_store('foo',$foo);
unset($foo);
$bar = apcu_fetch('foo');
var_dump($bar);
$bar->a = true;
var_dump($bar);
class bar extends foo
{
public $pub = 'bar';
protected $pro = 'bar';
private $pri = 'bar'; // we don't see this, we'd need php 5.1 new serialization
function __construct()
{
$this->bar = true;
}
function change()
{
$this->pri = 'mod';
}
}
class baz extends bar
{
private $pri = 'baz';
function __construct()
{
parent::__construct();
$this->baz = true;
}
}
$baz = new baz;
var_dump($baz);
$baz->change();
var_dump($baz);
apcu_store('baz', $baz);
unset($baz);
var_dump(apcu_fetch('baz'));
?>
===DONE===
--EXPECTF--
object(foo)#%d (0) {
}
object(foo)#%d (0) {
}
object(foo)#%d (1) {
["a"]=>
bool(true)
}
object(baz)#%d (6) {
["pri":"baz":private]=>
string(3) "baz"
["pub"]=>
string(3) "bar"
["pro":protected]=>
string(3) "bar"
["pri":"bar":private]=>
string(3) "bar"
["bar"]=>
bool(true)
["baz"]=>
bool(true)
}
object(baz)#%d (6) {
["pri":"baz":private]=>
string(3) "baz"
["pub"]=>
string(3) "bar"
["pro":protected]=>
string(3) "bar"
["pri":"bar":private]=>
string(3) "mod"
["bar"]=>
bool(true)
["baz"]=>
bool(true)
}
object(baz)#%d (6) {
["pri":"baz":private]=>
string(3) "baz"
["pub"]=>
string(3) "bar"
["pro":protected]=>
string(3) "bar"
["pri":"bar":private]=>
string(3) "mod"
["bar"]=>
bool(true)
["baz"]=>
bool(true)
}
===DONE===
|