私はこれを機能させる方法を見つけましたが、これを機能させるためだけに多くの魔法が行われていますが、私の場合はそれだけの価値があります.
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 についての楽しい調査でした。