2015-04-21 3 views
0

Я написал PHP-Skript, который использует PHPExcel. Он должен использовать конфигурационный файл для создания электронной таблицы. Моя проблема возникает, когда я пытаюсь применить стили.Как использовать значение переменной как свойства

Я создал массив стилей из информации, приведенной в конфигурационном файле. Теперь, когда дело доходит до, например, выравнивание ячеек или границ вы бы использовать что-то вроде

'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER 

где HORIZONTAL_CENTER является требуемым свойством. Теперь, у меня есть имя-свойства, хранящееся в переменном, и я не могу использовать что-то вроде

'horizontal' => PHPExcel_Style_Alignment::$variableWithPropertyName 

, но мне нужно значение переменного будет использоваться, поскольку может быть разными свойствами.

Любые идеи?

+0

Я забыл упомянуть, что, конечно, роковая ошибка «Доступ к необъявленной статического свойства: PHPExcel_Style_Alignment :: $ layoutValues» появляется! $ layoutValues ​​имеет желаемое имя свойства. – kratsching

+0

Я собираюсь взять здесь дикое предположение и сказать, что вы объявили '$ layoutValues' нестационарным. Вы можете получить доступ к нему, используя '$ this'. – Andrew

ответ

0
$alignmentsArray = (new ReflectionClass('PHPExcel_Style_Alignment'))->getConstants(); 

должен вернуться массив возможных значений выравнивания, проиндексированный по их имени, поэтому вы можете установить

'horizontal' => $alignmentsArray[$variableWithPropertyName] 

где $variableWithPropertyName ваше значение как HORIZONTAL_CENTER

0

Вы должны быть в состоянии использовать Reflection API для извлечения значения, например, так:

$property = new ReflectionProperty('PHPExcel_Style_Alignment', $variableWithPropertyName); 

И значение может быть получен следующим образом:

'horizontal' => $property->getValue(); 
+0

[getClassConstants()] (http://php.net/manual/en/reflectionclass.getconstants.php) было бы лучше, чем использование ReflectionProperty, потому что это все константы класса –

+0

Ooops, вы правы - ошибка новобранец! –

Смежные вопросы