Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
foreach ($child as $ch) {
if ($ch->nodeName === 'w:style') {
$sum++;
if ($ch->hasAttributes()) {
/** @var DOMAttr $attribute */
foreach ($ch->attributes as $attribute) {
if ($attribute->name === 'styleId') {
if ($attribute->value == $sTempStyle) {
/** @var DOMElement $styleNode */
foreach ($ch->childNodes as $styleNode) {
if (isset($styleNode->tagName) && $styleNode->tagName === 'w:basedOn') {
$basedOn = $styleNode->getAttribute('w:val');
$properties = $this->wordStyle2Array($basedOn, $tagName, $properties);
}
if (isset($styleNode->tagName) && $styleNode->tagName === $tagName) {
$elements = $styleNode->childNodes;
/** @var DOMElement $element */
foreach ($elements as $element) {
if (isset($element->tagName)) {
switch ($element->tagName) {
case 'w:color':
if ($element->hasAttribute('w:val')) {
$properties['color']['hex'] = '#' . $element->getAttribute
('w:val');
}
break;
case 'w:rFonts':
if ($element->hasAttribute('w:ascii')) {
$properties['font_family'] = $element->getAttribute('w:ascii');
}
break;
//кейсы - бесконечные как осень в России
}
}
}
}
}
}
}
}
}
}
Чувак, мы слышали ты любишь плодить уровни вложенности, поэтому мы написали switch в if в foreach в if в foreach в if в if в foreach в if в if в foreach, кажется.
"w" это namespace для docx xml. Код из phpdocx - либу можно всю постить на говнокод, например там есть метод на > 700 строчек и лишь ограничение формы в 100 строк не позволяет продемонстировать пиздец там происходящий.
Комментарии (7) RSS