我已经找到了让它工作的方法,有很多魔法只是为了让它工作,但就我而言,这是值得的。
class Test {
private $props = array();
function __get($name) {
return new Property(get_called_class(), $name, $this->props[$name]);
}
function __set($name, $value) {
$props[$name] = $value;
}
}
class Property {
public $name;
public $class;
public $value;
function __construct($class, $name, $value) {
$this->name = $name;
$this->class = $class;
$this->value = $value;
}
function __toString() {
return $value.'';
}
}
function GetClassByProperty($prop) {
return $prop->class.'->'.$prop->name;
}
$t = new Test();
$t->Name = "Test";
echo GetClassByProperty($t->Name);
这个例子是的,我知道它很复杂,但它完成了我想要的工作,将打印出“Test->Name”我也可以通过说 $prop->value 来获取值。如果我想将该值与另一个对象进行比较,我可以简单地这样做:
if($t->Name == "Test") { echo "It worked!!"; }
希望这不会太令人困惑,但这是对 PHP 的一次有趣的探索。