Доступ к значению из объекта (с частным свойством) в массиве с использованием php - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу получить значение из объекта в массиве. Свойство объекта установлено как частное. Итак, я не мог получить доступ к значению.

Я пытаюсь преобразовать приватное в публичное использование Php ReflectionClass.

VarDump объекта в массиве ($ obj_array)

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 от объекта. Это заканчивается с этой ошибкой.

Uncaught Ошибка: невозможно получить доступ к частной собственности PhpOffice \ PhpSpreadsheet \ Рабочий лист \ RowDimension :: $ высота

Заранее спасибо.

1 Ответ

2 голосов
/ 12 апреля 2019

Просто используйте функцию getRowHeight, которая возвращает внутреннее свойство height.(как видно из источника PhpSpreadSheet)

/**
 * Get Row Height.
 *
 * @return float
 */
public function getRowHeight()
{
    return $this->height;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...