Arquivos
hhvm/hphp/test/quick/magic-get-set.php
T
Paul Tarjan 0335e335b7 build setAccessible
This implementation feels a bit haphazard with all the forces in the `o_*`. Is this stuff all changing dario?
2013-07-18 17:28:42 -07:00

103 linhas
1.6 KiB
PHP

<?php
class C {
private $priv;
public $pub;
public function __set($k, $v) {
echo "set $k $v\n";
$this->$k = $v;
}
public function __get($k) {
echo "get $k\n";
return $this->$k;
}
}
$obj = new C();
// These are extension functions that call into o_set() and o_get(). These
// exercise t___get() and t___set().
hphp_set_property($obj, null, "priv", 1234);
var_dump(hphp_get_property($obj, "unused arg", "priv"));
hphp_set_property($obj, null, "pub", 123);
var_dump(hphp_get_property($obj, "unused arg", "pub"));
var_dump($obj);
$obj = new C();
// These exercise direct property setting and getting.
$obj->priv = 6789;
var_dump($obj->priv);
$obj->pub = 678;
var_dump($obj->pub);
var_dump($obj);
echo "\n******************************\n\n";
class D {
protected $foo;
public function __get($k) { echo "__get $k\n"; }
public function __set($k, $v) { echo "__set $k\n"; }
}
$obj = new D;
$obj->foo = 1;
var_dump($obj);
$obj = null;
$obj = new D;
$obj->foo += 1;
var_dump($obj);
$obj = null;
$obj = new D;
$obj->foo++;
var_dump($obj);
$obj = null;
echo "\n******************************\n\n";
class E {
public function __get($k) {
echo "__get $k\n";
}
}
$obj = new E;
$obj->foo = 1;
var_dump($obj);
$obj = null;
$obj = new E;
$obj->foo += 1;
var_dump($obj);
$obj = null;
$obj = new E;
$obj->foo++;
var_dump($obj);
$obj = null;
echo "\n******************************\n\n";
class F {
public function __set($k, $v) {
echo "__set $k\n";
}
}
$obj = new F;
$obj->foo = 1;
var_dump($obj);
$obj = null;
$obj = new F;
$obj->foo += 1;
var_dump($obj);
$obj = null;
$obj = new F;
$obj->foo++;
var_dump($obj);
$obj = null;