blob: 16bf0e31e0b7360865c630d8f2a50c7eee8e25a8 [file]
<?php
require "tests.php";
function check_read_only($object, $class, $name) {
try {
$object->$name = 81;
check::fail("$name was set");
} catch (Error $e) {
check::equal($e->getMessage(), "Cannot modify readonly property $class::\$$name", "$name message");
}
}
$v = new ImmutableVars();
$v->mutable_var = 80;
check::equal($v->mutable_var, 80, "mutable_var");
check_read_only($v, "ImmutableVars", "specific_immutable_var");
check::equal($v->specific_immutable_var, 41, "specific_immutable_var");
check_read_only($v, "ImmutableVars", "const_var");
check::equal($v->const_var, 42, "const_var");
$d = new DerivedImmutableVars();
$d->derived_mutable_var = 83;
check::equal($d->derived_mutable_var, 83, "derived_mutable_var");
$d->mutable_var = 84;
check::equal($d->mutable_var, 84, "derived mutable_var");
check_read_only($d, "DerivedImmutableVars", "specific_immutable_var");
check::equal($d->specific_immutable_var, 41, "derived specific_immutable_var");
check::done();