Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
29 / 29
UrionSerializer
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
6
100.00% covered (success)
100.00%
29 / 29
 serialize($instance)
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
10 / 10
 unserialize($string)
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
19 / 19
<?php
/**
 *
 */
namespace aae\std {
    /**
     * @author Axel Ancona Esselmann
     * @package aae\std
     */
    class UrionSerializer implements \aae\serialize\SerializerInterface {
        public function serialize($instance) {
            if (is_object($instance) && !$instance instanceof \JsonSerializable) {
                throw new \Exception("The object passed to ".__METHOD__." does not implement the JsonSerializable interface.", 216141337);    
            }
            $jsonString = json_encode($instance);
            $urionString = $jsonString;
            $urionString = str_replace("{", "(", $urionString);
            $urionString = str_replace("}", ")", $urionString);
            $urionString = str_replace("\"", "", $urionString);
            $urionString = str_replace("[", "", $urionString);
            $urionString = str_replace("]", "", $urionString);
            return $urionString;
        }
        public function unserialize($string) {
            $pattern = "/(^[^\(])/";
            $string = preg_replace($pattern, "[\"$1", $string);
            $pattern = "/([^\)])$/";
            $string = preg_replace($pattern, "$1\"]", $string);
            $pattern = "/([^,])([,:\)])/";
            $string = preg_replace($pattern, "$1\"$2", $string);
            $pattern = "/([,:\(])([^,])/";
            $string = preg_replace($pattern, "$1\"$2", $string);
            $string = str_replace("(", "{", $string);
            $string = str_replace(")", "}", $string);
            $string = str_replace("'", "\"", $string);
            $json = json_decode($string, true);
            if (!$json) {
                $string = preg_replace('/\s*(?!<\")\/\*[^\*]+\*\/(?!\")\s*/', '', $string);
                $json = json_decode($string, true);
            }
            if (!$json) {
                throw new \Exception("Invalid JSON was found in '$string'.", 216141338);
            }
            return $json;
        }
    }
}