就我所见,像 property_exists() 这样的反射方法对 dotric2 代理对象不起作用。

在这种情况下,通过关系 $user->getCity() 检索代理

在这种情况下,如何检查属性是否存在/设置?

最佳答案

解决方案是 ReflectionClass::getParentClass()

所以这样的代码应该可以工作:

$reflect = new \ReflectionClass($proxyObject);

if ($proxyObject instanceof \Doctrine\Common\Persistence\Proxy)
    // This gets the real object, the one that the Proxy extends
    $reflect = $reflect->getParentClass();

$privateProperty = $reflect->getProperty('privateProperty');
$privateProperty->setAccessible(true);
$privateProperty->setValue($proxyObject, $yourNewValue);

关于php - 对一个 dotric2 代理对象的反射(reflection),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14812123/

10-16 18:08