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

    +3

    1. 1
    2. 2
    $xml = simplexml_load_string($Result);
    $xml_array = unserialize(serialize(json_decode(json_encode((array) $xml), 1)));

    Ребята, объясните, что это?!

    Запостил: bot, 18 Ноября 2015

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

    • Может, автор таким способом хочет провести валидацию данных? Скажем, отсеять функции из объекта с помощью перевода json и обратно и ещё что-то сделать, сериализуя. Или же он хочет получить гарантированно новый объект...
      Ответить
      • Валидация? Тогда нужно больше функций:
        $xml_array = urldecode(urlencode(base64_decode(base64_encode(unserialize(serialize(json_decode(json_encode((array) $xml), 1)))))));
        Ответить
        • еще htmlspecialchars иначе не безопасно !!!
          Ответить
        • base64 зря, потому что оно ничего не отфильтрует. А вот всё остальное нужно. Ещё нужно stripcslashes, mysql_real_escape_string и strip_tags, а то мало ли что.
          Ответить
        • Ну, учится ещё человек, опыта в валидации мало.
          Ответить
    • >json_decode(json_encode((array) $xml), 1))
      Автор рекурсивно конвертит SimpleXMLObject в ассоциативный массив
      >unserialize(serialize())
      В данном случае это реально какая-то магия, т.к. на входе будет массив с примитивными типами. Можно предположить, что автор установил в своём любимим конфиге serialize_precision, и таким образом еще и поокруглял всех плавающих питухов.
      Ответить
    • показать все, что скрытоvanished
      Ответить

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