Arquivos
hhvm/hphp/test/vm/collection-initializer.php
T
andrewparoski cc858b73db Collections updates
Replace "collection" with "collections" in various file names since
we typically use the plural form in conversation and documentation.

Add set() and removeAt() methods needed for collection interfaces. Also
add the KeyedIterable and KeyedIterator interfaces.

Add __construct() methods for collections
2013-03-14 14:27:16 -07:00

104 linhas
2.1 KiB
PHP

<?php
function main() {
function f($x = Vector {}) {
return $x;
}
$v1 = f();
$v2 = f();
$v1[] = 11;
$v2[] = 22;
$v2[] = 33;
var_dump(count($v1), count($v2), ($v1 === $v2));
echo "=========\n";
function g() {
static $x = Vector {};
return $x;
}
$v1 = g();
$v2 = g();
$v1[] = 11;
$v2[] = 22;
$v2[] = 33;
var_dump(count($v1), count($v2), ($v1 === $v2));
echo "=========\n";
class C {
public $y = Vector {};
static public $z = Vector {};
}
$obj1 = new C;
$obj2 = new C;
$v1 = $obj1->y;
$v2 = $obj2->y;
$v1[] = 11;
$v2[] = 22;
$v2[] = 33;
var_dump(count($v1), count($v2), ($v1 === $v2));
var_dump(get_class(C::$z));
echo "=========\n";
class V {
public $x = array('a' => 1);
public $y = Map {'a' => 1};
}
class W extends V {
public $x = Map {'a' => 1};
public $y = array('a' => 1);
}
$obj1 = new W;
$obj2 = new W;
var_dump($obj1->x === $obj2->x);
$obj1->x['b'] = 11;
$obj2->x['c'] = 22;
$obj2->x['d'] = 33;
var_dump(count($obj1->x), count($obj2->x), ($obj1->x === $obj2->x));
echo "=========\n";
var_dump($obj1->y === $obj2->y);
$obj1->y['b'] = 11;
$obj2->y['c'] = 22;
$obj2->y['d'] = 33;
var_dump(count($obj1->y), count($obj2->y), ($obj1->y === $obj2->y));
echo "=========\n";
class X {
public $prop = array(Map {'a' => 1});
}
$obj1 = new X;
$obj2 = new X;
$obj1->prop[0]['a']++;
var_dump($obj1->prop[0]['a']);
var_dump($obj2->prop[0]['a']);
class Y {
public $prop = Vector {array(Map {'a' => 1})};
}
$obj1 = new Y;
$obj2 = new Y;
$obj1->prop[0][0]['a']++;
var_dump($obj1->prop[0][0]['a']);
var_dump($obj2->prop[0][0]['a']);
echo "=========\n";
define('FOO', 123);
define('BAR', "blah");
class Z {
const FOO = 456;
const BAR = "yo";
public $prop = StableMap {FOO => BAR, Z::FOO => Z::BAR};
}
$obj1 = new Z;
var_dump($obj1->prop[FOO], $obj1->prop[Z::FOO], count($obj1->prop));
$obj2 = new Z;
$obj1->prop[FOO] = 42;
$obj1->prop[Z::FOO] = 73;
var_dump($obj2->prop[FOO], $obj2->prop[Z::FOO]);
}
main();