我有一个Volume类的对象数组。我正在寻找在给定_id值的情况下返回_description属性的最佳方法(访问器方法是get_description)。
在下面的示例中,我将提供“vol-e123456a3”,它将返回“server E:volume”。
[0] => Volume Object
(
[_snapshot_count:protected] => 16
[_id:protected] => vol-e123456a3
[_description:protected] => server E: volume
[_region:protected] => us-east-1
[_date_created:protected] => DateTime Object
(
[date] => 2013-04-06 10:29:41
[timezone_type] => 2
[timezone] => Z
)
[_size:protected] => 100
[_state:protected] => in-use
)
答案 0 :(得分:0)
试试这个,
$_id="vol-e123456a3";
foreach($objArray as $obj)
{
if($obj->_id==$_id)
{
return isset($obj->_description) ? $obj->_description : "";
}
}
答案 1 :(得分:0)
您可以使用以下功能;数据成员被标记为受保护,因此为了从公共端访问它们,您必须使用尚未指定的访问方法。我猜测了最常见的访客名称。
function getValue($object_array, $filter) {
foreach ($object_array as $object)
if ($object->getId() == $filter) return $object->getDescription();
return false;
}
使用以下参数调用
$description = getValue($objects, 'vol-e123456a3');
如果没有公共访问器方法,我们将需要使用反射。如下
function getValue($object_array, $filter) {
foreach ($object_array as $object) {
$class = new ReflectionClass($object);
$prop = $class->getProperty('_id')->getValue($object);
if ($prop == $filter) return $class->getProperty('_description')->getValue($object)
}
return false;
}