1. PHP / Говнокод #19516

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    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, кажется.

    Запостил: mad_money, 24 Февраля 2016

    Комментарии (7) RSS

    • да, мог бы и без вложенности захуярить -- на goto.
      Ответить
    • "w" - винда, что ли?
      Ответить
      • W for wendetta
        Ответить
      • Это "M" перевёрнутая.
        Ответить
      • "w" это namespace для docx xml. Код из phpdocx - либу можно всю постить на говнокод, например там есть метод на > 700 строчек и лишь ограничение формы в 100 строк не позволяет продемонстировать пиздец там происходящий.
        Ответить
        • А по длине строки ограничения тоже есть?
          Ответить

    Добавить комментарий