使用php从数组中的对象(具有私有属性)访问值

问题描述 投票:0回答:1

我想从数组中的对象获取值。 Object属性已设置为private。所以,我无法访问该值。

我尝试使用Php ReflectionClass将private转换为public。

数组中对象的Var_Dump($ obj数组)

array(1) 
{
  [23]=>
  object(PhpOffice\PhpSpreadsheet\Worksheet\RowDimension)#6167 (7) 
   {
    ["rowIndex":"PhpOffice\PhpSpreadsheet\Worksheet\RowDimension":private]=>
    int(23)
    ["height":"PhpOffice\PhpSpreadsheet\Worksheet\RowDimension":private]=>
    string(3) "7.5"
    ["zeroHeight":"PhpOffice\PhpSpreadsheet\Worksheet\RowDimension":private]=>
    bool(false)
    ["visible":"PhpOffice\PhpSpreadsheet\Worksheet\Dimension":private]=>
    bool(true)
    ["outlineLevel":"PhpOffice\PhpSpreadsheet\Worksheet\Dimension":private]=>
    int(0)
    ["collapsed":"PhpOffice\PhpSpreadsheet\Worksheet\Dimension":private]=>
    bool(false)
    ["xfIndex":"PhpOffice\PhpSpreadsheet\Worksheet\Dimension":private]=>
    NULL
    }
}

将私有对象转换为公共的代码

       foreach($obj_array as $key=>$value)
       {
         $r = new ReflectionObject($value);
         $p = $r->getProperty('height');
         $p->setAccessible(true); 
         echo $obj->height.'<br/>';
       }

我希望得到物体的高度值7.5。它最终会出现此错误。

未捕获错误:无法访问私有属性PhpOffice \ PhpSpreadsheet \ Worksheet \ RowDimension :: $ height

提前致谢。

phpexcel phpspreadsheet
1个回答
2
投票

只需使用getRowHeight函数,它就会在内部返回私有height属性。 (如PhpSpreadSheet的来源所示)

/**
 * Get Row Height.
 *
 * @return float
 */
public function getRowHeight()
{
    return $this->height;
}
© www.soinside.com 2019 - 2024. All rights reserved.